75

我正在尝试在 eclipse 3.81 的 m2e 插件的 maven 项目中从 cdh4 maven repo导入 cloudera 的org.apache.hadoop:hadoop-client:2.0.0-cdh4.0.0 ,在 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

如何解决这个问题?

4

12 回答 12

103

问题出在 Eclipse Maven 支持中,相关问题在这里

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

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

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

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

于 2014-04-17T09:35:02.193 回答
95

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 常见问题解答添加依赖项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>
于 2012-06-20T11:01:33.267 回答
37

感谢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 做到了。

于 2012-06-20T11:14:07.117 回答
11

如果您可以在没有 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>
于 2016-09-09T18:32:20.937 回答
6

这对我有用:

    <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>
于 2015-10-22T17:37:14.547 回答
1

我在我的 MR 项目中使用下面。

<exclusions>
                <exclusion>
                    <artifactId>jdk.tools</artifactId>
                    <groupId>jdk.tools</groupId>
                </exclusion>
</exclusions>
于 2016-04-26T22:44:00.880 回答
0

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

我在 opensuse env 下发现了这个问题。我安装了 java-1_6_0-openjdk-devel

问题消失了。。

于 2014-03-12T15:18:07.137 回答
0

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

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

于 2014-11-21T03:18:07.567 回答
0

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

于 2015-01-23T08:38:48.747 回答
0

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

缺少工件:jdk.tools.....c:.../jre/..

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

于 2015-10-09T07:49:18.747 回答
0

尝试 :

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

于 2017-09-18T10:21:38.850 回答
-3

好的,如果您使用的是 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. 重建并运行!答对了!

于 2015-07-20T12:34:46.893 回答