使用 Eclipse/Maven 构建 Hadoop-缺少工件 jdk.tools: jdk.tools: jar: 1.6

我试图在 eclipse3.81,m2e 插件的一个 maven 项目中导入 Cloudera 的 Hadoop: hadoop-client: 2.0.0-cdh4.0.0 从 cdh4马文回购,在 win7上使用 Oracle 的 jdk 1.7.0 _ 05

<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

怎么解决这个问题?

126381 次浏览

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>

看,tools.jar添加依赖项的 MavenFAQ

或者,您可以使用以下方法在本地存储库中手动安装 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>

多亏了 npe

<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 完成了这个任务。

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

我发现这个问题在开放式环境下。 然后安装 java-1 _ 6 _ 0-openjdk-devel

问题解决了。

问题在于 Eclipse Maven 支持,相关的问题是 给你

在 Eclipse 下,java.home变量被设置为用于启动 Eclipse 的 JRE,而不是构建 JRE。来自 C:\Program Files的默认系统 JRE 不包含 JDK,因此找不到 tools.jar

To fix the issue you need to start Eclipse using the JRE from the JDK by adding something like this to eclipse.ini (之前 -vmargs!):

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

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

我也遇到了这个问题,因为我只安装了 JRE而没有使用 JDK。因此,添加对 JDK 工具的依赖关系对我来说不能解决问题,因为 Tools.jar不存在于我的 ${ JAVA _ HOME }/lib/目录中。

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

在 Eclipse 中更改已安装的 JRE 集。 窗口 > 首选项 > Java > 已安装的 JRE,更改 jre 的位置 到% JAVA _ HOME%/jre,但不是 C: Program Files Javajre7那样的东西

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

  1. 转到 C: Program Files Java jdk1.8.0 _ 40 lib (jdk 版本对您来说可能不同)

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

  3. 复制此路径“ 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. Rebuild and run! BINGO!

如果 jdk.tools 出现在. m2存储库中,仍然会得到如下错误:

丢失的工件: jdk.tools... ... c: .../jre/。

在 buildpath-> configure build path-> Library 中,只需将 JRE 系统库从 JRE 更改为 JDK 即可。

这对我很有效:

    <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>

我使用下面在我的先生项目。

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

如果你可以不使用 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>

尝试:

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

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