web-dev-qa-db-ja.com

ローカルリポジトリにtools.jarがないとm2eclipseが壊れる

私が経験している問題は、Eclipseがプロジェクトの依存関係を解決できないことです。コーディング時に依存関係が正しく機能しているように見えても(オートコンプリートが表示されます)、欠落しているアーティファクトを参照するエラーの膨大なリストが表示されるため、これにより問題が発生します。

これらをフィルタリングすると、次のことがわかりました。

コンテナ「Maven Dependencies」は、存在しないライブラリ「/home/[...]/.m2/repository/com/Sun/tools/1.5.0/tools-1.5.0.jar」を参照しています

この依存関係はpomで次のように設定されたプロファイルを持つstruts2によって導入されたようです。

<dependency>
    <groupId>com.Sun</groupId>
    <artifactId>tools</artifactId>
    <version>1.5.0</version>
    <scope>system</scope>
    <systemPath>${Java.home}/../lib/tools.jar</systemPath>
</dependency>

そのsystemPathは解決するので、これが問題を引き起こす理由はわかりません。いずれにせよ、このm2Eclipse依存関係がローカルリポジトリに見つからないシステム依存関係であることをEclipseに伝える方法はありますか?

18
wds

私は同じ問題に直面していて、次のことをする必要がありました

  • -vmpath/to/jdk/binEclipse.iniファイルに追加しました
  • 既存のワークスペースをクリーンアップして、プロジェクトをリロードします。

シームレスに機能しました。

それを追加する価値は、私のEclipse.iniファイルファイルの先頭に-vm ...行を追加する必要がありました。お気に入り

-vm
C:\Program Files\Java\jdk1.6.0_27\bin
... ... ...

-vmargsの後にすべてが直接vmに渡され、特定の選択は-vmオプションに依存するため、-vmオプションが-vmargsの前に配置されていることを確認してください。

24
Samiron

この問題が発生しましたが、以下の手順で修正しました:

Case1:

デフォルトではEclipseはJREを指しますが、Eclipse mavenプラグインはJDKを必要とするため、JDKを指します

ウィンドウ->設定-> Java->インストールされたJRE

jDKに変更します

手順に従って、JREからJDKに変更します。

  1. EclipseでIDE移動:ウィンドウ…設定…インストールされたJRE
  2. デフォルトのJREを選択し、[編集]をクリックします。
  3. 外部ジャーの追加をクリックします
  4. 「C:\ Program Files\Java\jdk1.6.0_22\lib」にtools.jarを見つけて追加しました。

これで問題なくプロジェクトをビルドできます。これはこの問題を解決する正しい方法ですか?

9

struts依存関係からツールjarを除外します。

<exclusions>
    <exclusion>
        <groupId>com.Sun</groupId>
        <artifactId>tools</artifactId>
    </exclusion>
</exclusions>
5
Sudheera

私は同じ問題を抱えていました-Eclipseがtools.jarを見つけることができませんでした。その理由は、EclipseがJDKではなくJREを使用していることがわかったためです。 JDK binディレクトリを指す-vmパラメータをEclipse.iniに追加する必要があります。
...
-vm
path_to_jdk\bin
...

これで問題が解決します。

5
Eugene

ダウンロード http://repository.ops4j.org/maven2/tools/tools/1.5.0/ とjarをC:\Documents and Settings\Administrador\.m2\repository\com\Sun\tools\1.5.0。幸運を。

3
user1396892

EclipseがJDKインストールを使用であることを確認する必要があります。

EclipseでIDE go to Window/Preferences/Java/_Installed JREs_はJDKインストールを指します。

例:C:\Program Files (x86)\Java\jdk1.6.0_37

3
Mojtaba

これを読んで色々試しました。私のために働いたのはこれでした:私はウィンドウを変更しました->設定-> Java->代わりにインストールされたJREがJDKを指すようにしました。これでこの問題は解決しました。

2
Ranga Nathan
<dependency>
   <groupId>com.Sun</groupId>
   <artifactId>tools</artifactId>
   <version>1.6.0</version>
   <scope>system</scope>
   <systemPath>${env.Java_HOME}/lib/tools.jar</systemPath>
 </dependency>

これを追加するだけです。それが動作します。

1
zorze

これは奇妙に聞こえるかもしれませんが、私はSVNリポジトリと再同期するだけでこの問題を解決しました。

問題は、ワークスペース全体を別のPCから取得したため、m2eプラグインを使用してmavenプロジェクトをインポートしたときに、一部の依存関係が正しく同期されなかった可能性があります。

誰かがこのエラーで必死になっていて、すべての可能性を試している場合に備えて、これを投稿しています。

1
Edu Castrillon

私も同様の問題があり、次の方法で修正しました。コマンドプロンプトでJDKインストールパスのlibディレクトリに移動します。以下のコマンドを実行してインストールし、tools.jarをインストールします。

$mvn install:install-file -DgroupId=Sun.jdk -DartifactId=tools \
     -Dpackaging=jar -Dversion=1.6 -Dfile=tools.jar
1

Eclipseにインポートする各プロジェクトで、Eclipseはファイルシステムにいくつかのファイルを作成します-.project、.classpath、フォルダー.settingsなど。 Eclipseがこれらを正しく更新していないようです。

これらを削除して、再度インポートしてください。

明らかに、これが最初のインポートであり、すでにいくつかの問題が発生している場合、この回避策は機能しません。ここを見るより Maven2:アーティファクトがありませんが、jarが配置されています

1
Amio.io

この依存関係は期待どおりに機能するはずです。疑わしい場合は、依存関係の解決に関してEclipseプラグインが非常に脆弱であるため、Mavenのコマンドラインバージョンを試してください。

Eclipseの他の部分とは異なり、POMに問題がある場合、ビルドの部分クラスパスさえ作成できないため、エラーは別の可能性があります。

他のすべてが失敗した場合は、次のエラーが表示されるように、ローカルリポジトリに ファイルをインストール してみてください。

0
Aaron Digulla

Macユーザー向け

[1]あなたのVMがどこにあるかを調べるには、この/ usr/libexec/Java_homeと入力します

[2] vi ./Eclipse.app/Contents/MacOS/Eclipse.ini

[3]
-vm
/ライブラリ/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/bin/
-vmargs ........ ........

[4] Eclipseで、Mavenを更新します

[5]すべてを歌うのは順調です:-)

0

私は最終的にそれを引き起こしているものを見つけました。 maven1リポジトリを使用している場合、m2Eclipseのバグのようです。私はまだ私のpomにJava.net maven1リポジトリを持っていました。無効にすると、すべてが再び機能します。結局のところ、ツールのjarファイルを見つけることとは何の関係もないため、追跡するのは非常に煩わしい問題です。

0
wds

誤ったJava構成によるこの問題。すべてのIDE必要な完全なJDKパック。jrelibではなく、JDK lib内でtools.jarが利用可能であるため

  1. コントロールパネルに移動して、環境パス変数をC:\ Program Files\Java\jdk1.8.0_31\jre\binに変更します。

  2. java_HOMEをC:\ Program Files\Java\jdk1.8.0_31に変更します。

  3. iDE(EclipseまたはSTS)を開き、JREシステムライブラリをC:\ Program Files\Java\jdk1.8.0_31に変更します。

次にIDEを再起動します。それが動作します

0
sampath peyyila

同じ問題が何度かありましたが、次の2つの手順で修正できました。

  1. 「-vm C:\\ bin」をEclipse.iniまたはEclipseを実行するリンクに追加しました。
  2. この問題が何度も発生した後、しばらく(1日程度)後にリロードされるm2Eclipseキャッシュがあるのではないかと疑い始めたので、奇妙な解決策を試しました。コンピューターの時間を一時的に翌日に変更してEclipseを再起動しましたまたはプロジェクトを閉じて/クリーンアップして...

このプロセスを何度か繰り返すことができました。

よりエレガントなソリューション(私はまだ試す機会がありませんでした)は、 https://stackoverflow.com/a/16444984 で言及されているm2Eclipseキャッシュをクリアすることです。

これが誰にも役立つことを願っています。

0
Jorge

私のために働いたハックな解決策:

次のjarがMavenキャッシュに見つからないというm2eの不満がある場合(pomファイルのエラーログまたは「Javaビルドパス> Maven依存関係」リストで不正なパスを見つけることができます):

${HOME}/.m2/repository/jdk/tools/jdk.tools/1.6/jdk.tools-1.6.pom

次に、次のコマンドを試します(インストールされているJDKの場合はJava_VERSION_HEREを入力します(例:jdk1.8.0_191-AMD64)。次に、上記の.m2/repository/の後にある2つのパスセクションを使用して正しいgroupIdを決定します。そして1.6をm2eが不満を述べているバージョンに置き換えます-インストールしたJDKがm2eが不満を言っているバージョンと一致するかどうかは問題ではないかもしれません):

mvn install:install-file -Dfile=/usr/Java/JAVA_VERSION_HERE/lib/tools.jar \
    -DgroupId=jdk.tools -DartifactId=jdk.tools -Dpackaging=jar -Dversion=1.6

このコマンドは、JDKからtools.jarをコピーしてMavenキャッシュに入れ、Mavenで使用できるようにpom.xmlファイルも作成します。

0
Luke Hutchison