Maven指向JRE而不是jdk

我一直在与一位同事一起解决我刚刚加入的一个新项目遇到的问题。 长话短说,maven没有正确构建我的.war文件。 当我给我的同事我的战争文件时,他遇到了同样的问题,当他给我他编译的.war文件时,一切正常。 我们都在使用相同的来源。 因此,我正在尝试正确设置maven(与他相同),我们现在都拥有相同版本的maven。 但是,我认为maven正在错误地查看java_home。

当我执行mvn -version命令时,我得到以下内容:

C:\java\KME_workspace\CU-KME>mvn -version Apache Maven 3.0.4 (r1232337; 2012-01-17 03:44:56-0500) Maven home: C:\java\tools\apache-maven-3.0.4 Java version: 1.6.0_45, vendor: Sun Microsystems Inc. Java home: C:\java\jdks\jdk1.6.0_45\jre Default locale: en_US, platform encoding: Cp1252 OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows" 

我的系统的JAVA_HOME变量正确设置为C:\ java \ jdks \ jdk1.6.0_45。

任何人都知道我的maven正在看jre,我该如何正确地将它设置回JDK? 我也可能正确地看待问题,所以如果你有任何想法,那就太好了。

谢谢。


正如一些人所指出的那样,在maven版本的java家中的JRE引用是我的一个红鲱鱼兔洞。 经过进一步测试,我有一些新的有趣信息。 我直接从命令行运行maven命令。 我使用eclipse从我们的svn存储库中检出代码,并尝试在该代码上运行maven包,并且.war无法正确构建。 但是,如果我在eclipse中将团队导出到新目录,并在其上运行maven包,它会构建.war罚款并且工作正常。 据我了解,eclipse中的团队导出会删除导出目录中的所有subversion文件。 任何人对如何解决这个问题都有任何想法?

来自Maven Properties Guide:

$ {java.home}指定当前JRE_HOME环境的路径,使用相对路径获取例如:$ {java.home} ../ bin / java.exe

java.home属性与JAVA_HOME环境设置不同。 它实际上是动态属性,显示哪个JRE正在运行您的代码。

尝试正确设置java.home属性,看看它是否有效。

在Eclipse中,Window> Preferences> Java> Installed JREs>确保jdk存在并被选中。

如果jdk和jre都存在,则从Installed JRE中删除jre。

Windows CMD不刷新环境变量,您需要运行新实例以应用新环境设置并刷新新变量JAVA_HOME。

获得JDK安装路径后:

  1. 右键单击桌面上的“我的电脑”图标,然后选择“属性”。
  2. 单击“高级”选项卡。
  3. 单击“环境变量”按钮。
  4. 在“系统变量”下,单击“新建”。
  5. 输入变量名称JAVA_HOME。
  6. 输入变量值(上面提到的路径之一)作为Java Development Kit的安装路径。
  7. 单击确定。
  8. 单击应用更改。

您可能需要重新启动Windows。

这对我有用。

如果它还显示编译器不可用,您可以在Eclipse IDE中将环境从jre替换为jdk,如下所示:

  • (右键单击)your_project_name>构建路径>配置构建路径>库>(双击)JRE系统库>备用Jre:jdk 1.8> ok
  • 然后从Libraries中的Installed JRES选项中选择jdk 1.8
  • 项目>清洁
  • Maven>更新