GVKun编程网logo

Maven错误:也许您在JRE而不是JDK上运行?

24

在这里,我们将给大家分享关于Maven错误:也许您在JRE而不是JDK上运行?的知识,同时也会涉及到如何更有效地12.10–“请确保您有JAVA_HOME指向JDK而不是JRE”消息、eclipse–

在这里,我们将给大家分享关于Maven错误:也许您在JRE而不是JDK上运行?的知识,同时也会涉及到如何更有效地12.10 – “请确保您有JAVA_HOME指向JDK而不是JRE”消息、eclipse – Maven错误:“更新Maven项目”、eclipse 中 默认是选择 JRE 的,应该修改为 JDK ,以及 JDK 与 jRE 的区别、Eclipse启动错误:A Java Runtime Environment(JRE) or Java Development Kit(JDK) must be available……的内容。

本文目录一览:

Maven错误:也许您在JRE而不是JDK上运行?

Maven错误:也许您在JRE而不是JDK上运行?

我以前从未与Maven合作过,并且正在按照这里的说明进行操作。当我运行命令

mvn integration-test -Pamp-to-war

最初下载了一大堆依赖项,最后显示了,

COMPILATION ERROR : [INFO] -------------------------------------------------------------[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?[INFO] 1 error

我在Ubuntu 13.04上。

如果您想让我告诉您什么,请告诉我。谢谢。

编辑

当我这样做echo $JAVA_HOME,我得到/usr/lib/jvm/java-7-openjdk-i386/

当我做 mvn -version

我明白了

Apache Maven 3.0.4Maven home: /usr/share/mavenJava version: 1.7.0_25, vendor: Oracle CorporationJava home: /usr/lib/jvm/java-7-openjdk-i386/jreDefault locale: en_US, platform encoding: UTF-8OS name: "linux", version: "3.8.0-26-generic", arch: "i386", family: "unix"

另外,我发现了别人面临的这个问题。但是我不确定如何执行指定的解决方案?

进一步的编辑。

kraken@kraken-Inspiron-1545:/usr/lib/jvm/java-7-openjdk-i386$ ls -ltotal 12drwxr-xr-x 2 root root 4096 Sep  9 10:44 binlrwxrwxrwx 1 root root   41 Jul  4  2013 docs -> ../../../share/doc/openjdk-7-jre-    headlessdrwxr-xr-x 5 root root 4096 Oct 13  2013 jredrwxr-xr-x 4 root root 4096 Oct 13  2013 man

答案1

小编典典

显然,它需要$ JAVA_HOME的lib文件夹中的tools.jar文件。我没有lib文件夹,所以我使用命令重新安装了jdk

apt-get install openjdk-7-jdk openjdk-7-doc openjdk-7-jre-lib

另外,此链接可能会对某些人有所帮助。

12.10 – “请确保您有JAVA_HOME指向JDK而不是JRE”消息

12.10 – “请确保您有JAVA_HOME指向JDK而不是JRE”消息

我安装了java

aaa@ubuntu:~$whereis java
java: /usr/bin/java /usr/bin/X11/java /usr/local/java /usr/share/java
aaa@ubuntu:~$whereis javac
javac: /usr/bin/javac /usr/bin/X11/javac

和etc / profile

JAVA_HOME=/usr/local/java/jdk1.7.0_17
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
JRE_HOME=/usr/local/java/jre1.7.0_17
PATH=$PATH:$HOME/bin:$JRE_HOME/bin
export JAVA_HOME
export JRE_HOME
export PATH

但是,当我运行Android Studio时,它说:

tools.jar in not in Android Studio classpath. Please ensure you have JAVA_HOME points 
to JDK rather than JRE.

我如何解决它?

更新

sudo update-alternatives --get-selections | grep ^java 
java                           manual   /usr/local/java/jre1.7.0_17/bin/java
javac                          manual   /usr/local/java/jdk1.7.0_17/bin/javac
javaws                         manual   /usr/local/java/jre1.7.0_17/bin/javaws


java -version
java version "1.7.0_17"

解决方法:

你必须在jdk中使用jre版本,你可以通过执行来实现

    sudo update-alternatives --set java /usr/local/java/jdk1.7.0_17/jre/bin/java
    sudo update-alternatives --set javaws /usr/local/java/jdk1.7.0_17/jre/bin/javaws

通常,这可以通过使用带有.jinfo文件的update-java-alternatives来完成,但由于某种原因,您无法在系统上找到它们.

eclipse – Maven错误:“更新Maven项目”

eclipse – Maven错误:“更新Maven项目”

我已经使用Maven和Spring安装了Eclipse 32位EE但是当我使用Maven创建新项目时,我不断收到以下错误消息:

An internal error occurred during: "Updating Maven Project".
loader constraint violation: loader 
(instance of org/eclipse/osgi/internal/baseadaptor/DefaultClassLoader) 
prevIoUsly initiated loading for a different type with name 
"org/apache/maven/project/MavenProject"

谢谢您的帮助

最佳答案
在Spring-Eclipse集成的某些版本组合中似乎是known problem.

升级或降级.

eclipse 中 默认是选择 JRE 的,应该修改为 JDK ,以及 JDK 与 jRE 的区别

eclipse 中 默认是选择 JRE 的,应该修改为 JDK ,以及 JDK 与 jRE 的区别

JDK 与 jRE 的区别

 

JDK(Java development kit):Java 开发工具,包括一系列 java 命令,如 javac(java compiler) 等;同时 jdk 包含 jre,因为 jdk 其实是面向 java 开发人员的,开 发完之后还要进行调试运行等,这就需要 jre 了;

JRE(java runtime environment):java 运行时环境,java 文件被 javac 编译过后形成字节码文 件,这个文件计算机是不能理解和处理的,需要有 jvm(java virtual machine)处理后形成机器语言在传递给计算机处理 (这也是为什么说 java 具有平台无关性)。Jvm 就存在于 jre 中。可见,jre 其实是面向 java 程序的使用者;

 

所以,当你需要开发一个 java 程序时,你需要的是 jdk,但如果需要运行一个 java 程序,就需要 jre 了。让人迷惑的是,当你下载并安装 jdk 之后,会发现在 jdk 文件夹内部和外部同时存在 jre 文件夹(证明了 jdk 包含 jre),下面我们来说说其中的原因:

 

内部 jre:当你开发 java 程序时,需要用到一些 javac 之类的命令,就会调用 jdk(java 开发  工具)内部的 jre;

外部 jre:当你只需要运行一个 java 程序而不是开发时,就会调用外部的 jre;

那么为什么要分两个呢?公用一个不就行了吗,还节省了资源。其实分为两个 jre,更多的是为了提高性能和效率,打开两个 jre 的文件夹,对比一下会发现:

外部 jre 中,在其 client 文件夹里面,有个 jvm.dll;内部 jre 中,多了个 server 文件夹,其中也有个 jvm.dll 文件,主要是两个 vm 的区别,使得内外部 jre 有不同的分工,并且能在各自的分工上做到最好(提高各自的效率和性能)。

 

附上 Oracle 官网的一张截图:

 

(http://docs.oracle.com/javase/7/docs/)

 

从这张图中可以得到:JVM⊂JRE⊂JDK

说到这里,顺便提一下 windows 下环境变量中的 path 和 classpath,毕竟好记性不如烂笔头!

安装好 jdk 之后,下一步就要配置环境变量了,怎么配置就不多说了,网上很多,简单的说一下为什么要分这两个来配置:

path 变量:与其中的值相对应的路径下面是一些 java 命令程序,如 javac;

Classpath 变量:与其中值相对应的路径下面是程序需要用到的一些 java 提供的类(jar 包);

有时也用到 JAVA_HOME 环境变量,它指向 jdk 的安装目录,Eclipse/tomcat 等就是通过其找到并使用安装好的 jdk。配置好之后,即可在任何目录下用 java 命令执行 java 程序。那么为什么系统可以在任何目录下使用 JDK 提供的命令呢?

 

其实环境变量就是能够让系统更快速方便的找到所需的东西,有兴趣的可以看一下 windows 系统变量中的 path 变量中已有的值,例如 C:\Windows\system32;,按这个路径打开,会发现里面有很多可执行文件,比如 cmd.exe,这就是为什么我们能够在 “运行” 窗口输入 cmd 之后就出现命令行的原因。说到这里,你也可以试试利用环境变量启动其他程序!

eclipse 中的 JDK 与 JRE:

 

其实写这篇文章的出发点就是因为在 Eclipse 中用 maven 时,被各种 jre、jdk 搞得混乱,于是决定弄清楚。先简单的介绍一下:

Eclipse: 是一款集成开发的 IDE,可以开发,编译,调试,运行代码等;

JDK:java 开发工具,用来将.java 文件编译成字节码文件;

JRE:java 运行时环境,执行编译后得字节码文件;

Maven:一款项目管理工具;

 

Eclipse 中其实内嵌了 Java 编译器,其编译器的作用等同于 jdk 中的 javac,所以 eclipse 其实只需要 jre 就可以编译 java 文件(在 eclipse 中当你保存一个 java 类时,它就会自动编译这个 java 类,相当于在命令行中用了 javac 这个命令)。但如果你在 eclipse 中用了 maven 这样的工具,可能就无法编译了。因为 maven 默认使用 javac 来编译项目的,也就是需要 jdk,而如果你的 eclipse 中某 maven 项目只指定了 jre,就会出现无法编译的情况。就像是启动 Tomcat 只需要 jre,原因是 Tomcat 中已经包括了源代码编译器,不需要 jdk 中的 javac 来编译。

Eclipse 中有几处会用到 jdk 和 jre 的,下面列出几个,也是我混乱之处所在:

 

A. Window->preferences->Java->Installed JREs

 

这里 Installed JREs 中的可以理解为 “全局常量”,这里设置好,之后新建的项目都默认用这里选定的 jre 或者 jdk,但如果项目中用了 maven 的话,前面说了 maven 默认的是 jdk 中的 javac 来编译,所以如果这里还是用 jre 的话就会 maven install 出错,需要选择 jdk 才行。更改直接 Add->Standard VM, 点击 directory,选择相应的 jdk 或者 jre 路径确定即可。

B. 给不同的项目选择不同的 jre

右击项目名称 ->build path->configure build path, 选择 libraries 选项卡,选中 jre:

 

点击 edit:

 

可根据不同的需求选择不同的选项卡,并按照提示完成操作即可。注意,当你选择第二个选项卡 “替代 JRE” 时,eclipse 会跳转至 installed jre 中让你选择,因此,需要你提前在 installed jre 中配置好。

C. Window ->preferences->java->compiler

 

这里也会有一个 jdk 的选择,就是编译时 jdk 的版本,需要注意的一点是:

编译时的 jdk 版本不能高于项目 build path 中的 jdk 即运行时 jdk,因为高版本中的有些功能在低版本中并不提供。例如,项目中用了泛型,编译时为 jdk1.5 但运行时为 jdk1.4,虽然编译时不报错,但运行时就会出错,因为 jdk1.4 并不支持泛型;反过来,编译时为 jdk1.4 而运行时为 jdk1.5,虽然编译时报错,但却可以正确运行。

 

总之就是 如果 使用 maven 的时候 请 选择  JDK 。不然会使用 maven 命令报错的。

Eclipse is running in a JRE ,but a  JDK is  required .... 

修改 为 JDK 即可。同时之前的项目 如果使用 了 JRE 也 要修改为 对应的 JDK。

 

Eclipse启动错误:A Java Runtime Environment(JRE) or Java Development Kit(JDK) must be available……

Eclipse启动错误:A Java Runtime Environment(JRE) or Java Development Kit(JDK) must be available……

安装开发环境: 打开eclipse报错 输入图片说明 提示缺少java运行环境 第一个判断就是检查java环境变量有没有配置错误; java环境变量配置: JAVA_HOME = jdk安装路径 Path = %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; jdk1.5后不需要配置CLASSPATH = .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; (不能少点) 第二判断eclipse内配置文件 eclipse.ini 内的java路径是否正确 输入图片说明 改完这两步后若还有问题 则判断一下jdk是否安装正确

到此这个问题基本就能解决了

关于Maven错误:也许您在JRE而不是JDK上运行?的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于12.10 – “请确保您有JAVA_HOME指向JDK而不是JRE”消息、eclipse – Maven错误:“更新Maven项目”、eclipse 中 默认是选择 JRE 的,应该修改为 JDK ,以及 JDK 与 jRE 的区别、Eclipse启动错误:A Java Runtime Environment(JRE) or Java Development Kit(JDK) must be available……等相关知识的信息别忘了在本站进行查找喔。

本文标签: