Maven:缺少工件com.sun:tools:jar:POM.xml中的1.6.0编译时exception
当我试图为工具添加依赖性时,我得到一个奇怪的问题并在我的pom.xml中获得编译时exception。 jar显示如下( Missing artifact com.sun:tools:jar:1.6.0 )
我已将JAVA_HOME变量设置如下:
JAVA_HOME :C:\ Program Files \ Java \ jdk1.6.0_34
当我将它硬编码到JDK1.6的实际路径时,我没有发现任何错误,如下所示。
com.sun tools 1.6.0 system C:\Program Files\Java\jdk1.6.0_34\lib\tools.jar
但我知道这不是好习惯。 请求解决此错误的指导。
java.home
是一个System属性,它通常指向jre目录,当你指向一个不存在的jar时,你会收到一个错误。
如果要在pom文件中引用环境变量,请使用以下语法。
${env.variable_name}
在您的情况下,它应该是${env.JAVA_HOME}
,如下所示
com.sun tools 1.6.0 system ${env.JAVA_HOME}/lib/tools.jar
更新:正如词典提到的,这不适用于MAC,因为MAC JDK具有不同的文件结构。
在Maven中,$ {java.home}指向JDK使用的JRE目录,而不是JDK本身。 请看这个问题:
Maven中的Java_home
而不是
${java.home}/lib/tools.jar
假定您应该使用的JDK目录
${java.home}/../lib/tools.jar
但是,这只是解决方案的一半。 问题是在Mac下,目录结构不同。 您必须使用用户配置文件才能使您的构建可靠地跨平台工作。
请看这个问题:
JDK tools.jar作为maven依赖
而且,具体而言, 这个答案 (这是正确答案,而不是那里接受的OP)。
这就是Oracle在其中一个POM中处理它的方式:
com.sun tools 1.6 system ${tools.jar}
然后在profiles
:
default-tools.jar ${java.home}/../lib/tools.jar ${java.home}/../lib/tools.jar default-tools.jar-mac ${java.home}/../Classes/classes.jar ${java.home}/../Classes/classes.jar
在Mac上,JDK具有不同的文件结构。 这就是您必须定义这些配置文件的原因。
另见以下post:
- JDK tools.jar作为maven依赖
- 构建错误:缺少工件com.sun:tools:jar:1.6
- 缺少神器sun.jdk:tools:jar:1.6.0:system
- 缺少工件com.sun:工具:jar:1.5.0 maven