用 Eclipse / Maven 构建 Hadoop - Missing artifact jdk.tools:jdk.tools:jar:1.6

2022-08-31 13:14:03

我正在尝试在eclipse 3.81,m2e插件中的maven项目中从cdh4 maven repo导入clouderaorg.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

如何解决这个问题?


答案 1

问题在于对Eclipse Maven的支持,相关的问题就在这里

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

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

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

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


答案 2

jdk.tools:jdk.tools(或 ,或者您命名为什么)是与 JDK 一起分发的 JAR 文件。通常你把它添加到像这样的maven项目中:com.sun:tools

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

请参阅 Maven 常见问题解答,了解如何向工具添加依赖项.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>

推荐