使用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.home
variables被设置为用于启动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操作系统
-
转到C:\ Program Files \ Java \ jdk1.8.0_40 \ lib(jdk版本可能会有所不同)
-
确保tools.jar存在(否则下载)
-
复制这个path“C:\ Program Files \ Java \ jdk1.8.0_40”
-
在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>
-
重build并运行! 答对了!