Maven没有正确选择JAVA_HOME

Gar*_*rry 26 java pom.xml maven

我在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>
Run Code Online (Sandbox Code Playgroud)

当我运行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]
Run Code Online (Sandbox Code Playgroud)

问题是它tools.jar在" C:\Program Files\Java\jdk1.6.0_26\lib"中并且在JAVA_HOME环境变量中正确设置但是maven仍然在jre文件夹中查找错误消息" C:\Program Files\Java\jre6\lib\tools.jar".

C:\>echo %JAVA_HOME%
C:\Program Files\Java\jdk1.6.0_26
Run Code Online (Sandbox Code Playgroud)

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

<dependency>
  <groupId>com.sun</groupId>
  <artifactId>tools</artifactId>
  <version>1.6</version>
  <scope>system</scope>
  <systemPath>C:\Program Files\Java\jdk1.6.0_26\lib\tools.jar</systemPath>
</dependency>
Run Code Online (Sandbox Code Playgroud)

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

rus*_*tyx 36

这是Eclipse Maven支持中的一个错误.根据Maven规范, Eclipse不支持所有全局Maven属性.

根据规格:

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

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

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

-vm
C:/<your_path_to_jdk170>/jre/bin/server/jvm.dll
Run Code Online (Sandbox Code Playgroud)

  • 在这个答案五年后,这个错误仍然存​​在(现在是 2019-04-05)。我还要注意的是,要非常小心路径。1) 不要在字符串周围使用双引号。2) 即使在 Windows 中也使用正斜杠。3) 使用 jvm.dll 4) 确保您指向 `jdk.../jre/...`。5) 正如@Daniel Fernández 所指出的,在 -vm 之后需要换行(而不是 --vm!)对我来说,获胜的路径是这个`C:/Program Files/Java/jdk1.8.0_201/jre/bin/服务器/jvm.dll` (2认同)