Clouderaのorg.Apache.hadoop:hadoop-client:2.0.0-cdh4.0.0from cdh4をインポートしようとしていますEclipse 3.81のmavenプロジェクトのmaven repo 、win7上のOracleのjdk 1.7.0_05を使用したm2eプラグイン
<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サポートにあり、関連する質問は here です。
Eclipseでは、Java.home
変数はビルドJREではなく、Eclipseの起動に使用されたJREに設定されます。 C:\Program Files
のデフォルトのシステムJREにはJDKが含まれていないため、tools.jar
が見つかりません。
この問題を解決するには、Eclipse.ini
(before-vmargs
!)に次のようなものを追加して、JDKからJREを使用してEclipseを起動する必要があります。
-vm
C:/<your_path_to_jdk170>/jre/bin/server/jvm.dll
次に、Mavenの依存関係(Alt-F5)を更新します(プロジェクトを更新するだけでは不十分です)。
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にトリックを行いました。
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>
これは私のために働いた:
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>
私は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
Jdk.toolsが.m2リポジトリに存在する場合。それでも、次のようなエラーが表示されます。
アーティファクトの欠落:jdk.tools ..... c:.../jre/..
Buildpath-> configure build path-> Libraries.JREシステムライブラリをJREからJDKに変更します。
EclipseにインストールされているJREのセットを変更します。ウィンドウ>設定> Java>インストールされたJRE、jreの場所を%Java_HOME%/ jreに変更しますが、C:\ Program Files\Java\jre7のようなものは変更しません
多分システムはjdkパッケージをインストールしますが、多分いくつかの開発ツールまたはプラグインです。
この問題はopensuse envで見つかります。そして、Java-1_6_0-openjdk-develをインストールします
問題は消え去ります。
また、JREだけをインストールしたため、この問題に直面しましたJDK。したがって、jdk.toolsの依存関係を追加しても、tools.jarはmy$ {Java_HOME}/lib /ディレクトリに存在します。
今、私はそれを修正するために JDK をダウンロードしてインストールしました。