Maven没有正确选择JAVA_HOME

时间:2012-11-08 12:03:29

标签: java maven pom.xml

我在Windows环境中并使用maven编译我的项目。虽然我刚创建了项目并添加了各种库的依赖项。

当我添加它们时,maven开始抱怨丢失的tools.jar,所以我在下面添加到我的pom.xml

<dependency>
  <groupId>com.sun</groupId>
  <artifactId>tools</artifactId>
  <version>1.6</version>
  <scope>system</scope>
  <systemPath>${java.home}/../lib/tools.jar</systemPath>
</dependency>

当我运行maven安装时,我收到了丢失jar的错误,如下所示:

[ERROR] Failed to execute goal on project GApp: Could not resolve dependencies for project GApp:GApp:war:0.0.1-SNAPSHOT: Could not find artifact com.sun:tools:jar:1.6 at specified path C:\Program Files\Java\jre6\lib\tools.jar -> [Help 1]

问题是tools.jar位于“C:\Program Files\Java\jdk1.6.0_26\lib”并且已在JAVA_HOME环境变量中正确设置,但maven仍然在jre文件夹中查找错误消息“{ {1}}”。

C:\Program Files\Java\jre6\lib\tools.jar

有趣的是:当我设置依赖的完整路径时,它工作得很好。但我不想硬编码。

C:\>echo %JAVA_HOME%
C:\Program Files\Java\jdk1.6.0_26

有人可以为此建议任何动态解决方案吗?

8 个答案:

答案 0 :(得分:36)

这是Eclipse Maven支持中的一个错误。 Eclipse根据Maven specs不支持所有全局Maven属性。

根据规格:

  

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

至少在Eclipse 4.3.1中并非如此,这里java.home始终指向用于启动Eclipse 的 JRE,而不是构建JRE。

要解决此问题,您需要使用JDK中的JRE启动Eclipse,方法是将此类内容添加到eclipse.ini之前 -vmargs!):

-vm
C:/<your_path_to_jdk170>/jre/bin/server/jvm.dll

答案 1 :(得分:2)

似乎你的JAVA_HOME设置为指向eclipse中的JRE。

答案 2 :(得分:2)

您绝不应该使用系统范围依赖项。 tools.jar中的所有代码都可以通过正在运行的JVM获得。你应该完全删除这种依赖..

另外,为了检查Maven正在使用的运行时,只需调用

mvn -v

如果您仍然依赖工具jar作为问题,那么您添加的依赖项之一具有该依赖性(并且它的质量非常差)。找出它运行的那个

mvn dependency:tree

或者如果失败则只删除一个依赖关系,直到上面的命令出现问题为止。

然后,当您知道它来自何处时,您可以决定下一步该做什么。一条路径就是在拉动工具的依赖项上使用排除。

答案 3 :(得分:1)

添加JAVA_HOME环境变量时,如果路径中有空格,则必须用引号将整个内容包装起来。

答案 4 :(得分:1)

Maven $ {java.home}属性根据Eclipse执行情况设置并从不同的地方获取:

  • 来自为工作区选择的默认JRE

      

    窗口&gt;首选项&gt; Java&gt;已安装的JRE

  • 来自特定的Eclipse项目,

      

    Java构建路径&gt;库&gt; JRE系统库

  • 来自运行配置。

      

    运行配置&gt;具体运行配置&gt; JRE

记住您的JRE主路径指向JDK下的JDK或JRE

答案 5 :(得分:1)

还要在主目录中的.mavenrc文件中查找。 这让我措手不及。

我按照建议进行了更改,只是发现我的.mavenrc文件将JAVA_HOME设置为较旧的版本。

答案 6 :(得分:0)

听起来你在Eclipse中运行Maven。 Eclipse不会咨询JAVA_HOME。

确保已将Eclipse首选项中的JRE设置为所需的JDK。

答案 7 :(得分:0)

您可能使用了错误的Maven安装。在Window&gt;中切换它偏好&gt; Maven&gt;安装。我已经安装了Fedora Maven;将其更改回默认值(m2e中嵌入的版本)为我解决了问题。

我怀疑造成这个问题的原因是Fedora Maven的安装是使用Fedora的OpenJDK,这可能会将tools.jar放在一个奇怪的位置(关于Fedora的OpenJDK的一切都很奇怪和非标准),所以Maven无法找到它