Maven 指向 JRE 而不是 jdk

2022-09-02 03:37:20

我一直在与一位同事合作,解决我在刚刚加入的新项目中遇到的一个问题。长话短说,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。

有谁知道我的专家正在查看jre,我如何正确地将其设置回JDK?有可能我也正确地看待这个问题,所以如果你有任何想法,那就太好了。

谢谢。


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


答案 1

来自 Maven 属性指南:

${java.home} 指定当前JRE_HOME环境的路径,例如:${java.home}.。/bin/java.exe

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

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


答案 2

在 Eclipse 中,Window>Preferences>Java>Installed JREs>确保 jdk 存在且处于选中状态。

如果 jdk 和 jre 都存在,则从已安装的 JRE 中删除 jre。


推荐