使用Eclipse / Maven构buildHadoop – 缺less神器jdk.tools:jdk.tools:jar:1.6

我试图导入cloudera的org.apache.hadoop:hadoop客户端:2.0.0-cdh4.0.0 从cdh4 maven回购在eclipse 3.81,m2e插件与oracle的jdk 1.7.0_05在win7上的maven项目

<dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>2.0.0-cdh4.0.0</version> </dependency> 

但是,我得到以下错误:

 The container 'Maven Dependencies' references non existing library 'C:\Users\MyUserId\.m2\repository\jdk\tools\jdk.tools\1.6\jdk.tools-1.6.jar' 

更具体的说,maven说下面的工件丢失了

 Missing artifact jdk.tools:jdk.tools:jar:1.6 

如何解决这个问题?

jdk.tools:jdk.tools (或者com.sun:tools ,或者其他任何你命名的)是一个与JDK一起发布的JAR文件。 通常你将它添加到像这样的maven项目中:

 <dependency> <groupId>jdk.tools</groupId> <artifactId>jdk.tools</artifactId> <scope>system</scope> <systemPath>${java.home}/../lib/tools.jar</systemPath> </dependency> 

请参阅Maven FAQ向tools.jar添加依赖关系

或者,您可以使用以下方法在本地存储库中手动安装tools.jar

 mvn install:install-file -DgroupId=jdk.tools -DartifactId=jdk.tools -Dpackaging=jar -Dversion=1.6 -Dfile=tools.jar -DgeneratePom=true 

然后像Cloudera那样引用它,使用:

 <dependency> <groupId>jdk.tools</groupId> <artifactId>jdk.tools</artifactId> <version>1.6</version> </dependency> 

问题出在Eclipse Maven的支持上,相关的问题在这里 。

在Eclipse下, java.homevariables被设置为用于启动Eclipse的JRE,而不是构buildJRE。 C:\Program Files中的默认系统JRE不包含JDK,所以不能findtools.jar

要解决这个问题,您需要使用JDK中的JRE启动Eclipse,方法是在eclipse.ini添加如下内容( -vmargs之前 ):

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

然后刷新Maven依赖关系(Alt-F5)(只刷新项目是不够的)。

感谢npe,join

 <dependency> <groupId>jdk.tools</groupId> <artifactId>jdk.tools</artifactId> <version>1.7.0_05</version> <scope>system</scope> <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath> </dependency> 

到pom.xml的伎俩。

这对我工作:

 dependency> <groupId>jdk.tools</groupId> <artifactId>jdk.tools</artifactId> <version>1.7.0_05</version> <scope>system</scope> <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath> </dependency> 

如果你可以没有tools.jar而只能作为一个链接依赖项被包含,你可以把它从违规的项目中排除:

 <dependency> <groupId>org.apache.ambari</groupId> <artifactId>ambari-metrics-common</artifactId> <version>2.1.0.0</version> <exclusions> <exclusion> <artifactId>jdk.tools</artifactId> <groupId>jdk.tools</groupId> </exclusion> </exclusions> </dependency> 

也许系统安装JDK包,但也许一些开发工具或插件。

我发现openuse env下的这个问题。 我安装java-1_6_0-openjdk-devel

问题已经消失

我也遇到了这个问题,因为我只是安装了JRE而不是JDK 。 所以,为jdk.tools添加依赖关系无法修复,因为我的$ {JAVA_HOME} / lib /目录下tools.jar不存在。

现在我下载并安装了JDK来修复它。

在eclipse中更改安装的JRE的集合。 Window> Preferences> Java>已安装的JRE,将jre的位置更改为%JAVA_HOME%/ jre,但不是像C:\ Program Files \ Java \ jre7

如果jdk.tools存在于.m2存储库中。 你仍然得到这样的错误:

丢失神器:jdk.tools ….. c:… / jre / ..

在buildpath-> configure构buildpath – > Libraries.Just中,将JRE系统库从JRE更改为JDK。

我在MR项目中使用下面。

 <exclusions> <exclusion> <artifactId>jdk.tools</artifactId> <groupId>jdk.tools</groupId> </exclusion> </exclusions> 

尝试:

mvn install:install-file -DgroupId = jdk.tools -DartifactId = jdk.tools -Dversion = 1.6 -Dpackaging = jar -Dfile =“C:\ Program Files \ Java \ jdk \ lib \ tools.jar”

还请检查: http : //maven.apache.org/guides/mini/guide-3rd-party-jars-local.html

好的,如果你正在使用Windows操作系统

  1. 转到C:\ Program Files \ Java \ jdk1.8.0_40 \ lib(jdk版本可能会有所不同)

  2. 确保tools.jar存在(否则下载)

  3. 复制这个path“C:\ Program Files \ Java \ jdk1.8.0_40”

  4. 在pom.xml中

     <dependency> <groupId>jdk.tools</groupId> <artifactId>jdk.tools</artifactId> <version>1.8.0_40</version> <scope>system</scope> <systemPath>C:/Program Files/Java/jdk1.8.0_40/lib/tools.jar</systemPath> </dependency> 
  5. 重build并运行! 答对了!