Maven:缺少工件com.sun:tools:jar:POM.xml中的1.6.0编译时异常

sTg*_*sTg 5 java maven-2 pom.xml maven-3 maven

当我尝试为工具添加依赖性时,我得到一个奇怪的问题并在我的pom.xml中获得编译时异常.jar显示如下(Missing artifact com.sun:tools:jar:1.6.0)

问题

我已将JAVA_HOME变量设置如下:

JAVA_HOME:C:\ Program Files\Java\jdk1.6.0_34

当我将它硬编码到JDK1.6的实际路径时,我没有发现任何错误,如下所示.

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

但我知道这不是好习惯.请求解决此错误的指导.

cod*_*lus 13

java.home 是一个System属性,通常指向jre目录,当你指向一个不存在的jar时,你会收到一个错误.

如果要在pom文件中引用环境变量,请使用以下语法.

${env.variable_name}
Run Code Online (Sandbox Code Playgroud)

在您的情况下,它应${env.JAVA_HOME}如下所示

<dependency>
   <groupId>com.sun</groupId>
   <artifactId>tools</artifactId>
   <version>1.6.0</version>
   <scope>system</scope>
   <systemPath>${env.JAVA_HOME}/lib/tools.jar</systemPath>
 </dependency>
Run Code Online (Sandbox Code Playgroud)

更新:正如词典提到的,这不适用于MAC,因为MAC JDK具有不同的文件结构.