我一直在和一位同事一起解决我刚刚加入的一个新项目遇到的问题。长话短说,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文件。任何人对如何解决这个问题都有任何想法?
答案 0 :(得分:20)
$ {java.home}指定当前JRE_HOME环境的路径 使用相对路径获取例如: $ {java.home} ../仓/ java.exe的
java.home
属性与JAVA_HOME环境设置不同。它实际上是动态属性,显示哪个JRE正在运行您的代码。
尝试正确设置java.home属性并查看它是否有效。
答案 1 :(得分:2)
在Eclipse中,Window> Preferences> Java> Installed JRE>确保jdk存在并被选中。
如果jdk和jre都存在,则从已安装的JRE中删除jre。
答案 2 :(得分:2)
如果还显示编译器不可用,则可以按照以下方法在Eclipse IDE中将环境从jre替换为jdk:
答案 3 :(得分:0)
Windows CMD不刷新环境变量,您需要运行新实例以应用新环境设置并刷新新变量JAVA_HOME。
答案 4 :(得分:0)
获得JDK安装路径后:
您可能需要重新启动Windows。
这对我有用。
答案 5 :(得分:0)
答案 6 :(得分:0)
如果您将变量命名为javapath
,也会发生此错误。如果您已指定,请尝试将其删除就像JAVA_HOME-> "C:\Program Files\Java\jdk1.8.0_171"
然后在路径-> "%JAVA_HOME%\bin"