35

私はWindows環境を使用しており、mavenを使用してプロジェクトをコンパイルしています。プロジェクトを作成し、さまざまなライブラリの依存関係を追加したばかりですが。

それらを追加すると、 maven が行方不明の について不平を言い始めたtools.jarので、以下を my に追加しましpom.xml

<dependency>
  <groupId>com.sun</groupId>
  <artifactId>tools</artifactId>
  <version>1.6</version>
  <scope>system</scope>
  <systemPath>${java.home}/../lib/tools.jar</systemPath>
</dependency>

Maven インストールを実行すると、以下のように jar が見つからないというエラーが発生しました。

[ERROR] Failed to execute goal on project GApp: Could not resolve dependencies for project GApp:GApp:war:0.0.1-SNAPSHOT: Could not find artifact com.sun:tools:jar:1.6 at specified path C:\Program Files\Java\jre6\lib\tools.jar -> [Help 1]

問題は、tools.jarが " C:\Program Files\Java\jdk1.6.0_26\lib" にあり、環境変数に正しく設定されてJAVA_HOMEいるが、エラー メッセージ " " にあるように、maven がまだ jre フォルダを探していることC:\Program Files\Java\jre6\lib\tools.jarです。

C:\>echo %JAVA_HOME%
C:\Program Files\Java\jdk1.6.0_26

興味深いことに、依存関係にフルパスを設定すると、うまくいきました。しかし、私はそれをハードコーディングしたくありません。

<dependency>
  <groupId>com.sun</groupId>
  <artifactId>tools</artifactId>
  <version>1.6</version>
  <scope>system</scope>
  <systemPath>C:\Program Files\Java\jdk1.6.0_26\lib\tools.jar</systemPath>
</dependency>

誰かがこれに対する動的な解決策を提案できますか?

4

9 に答える 9

39

これは、Eclipse Maven サポートのバグです。Eclipse は、 Maven の仕様に従って、すべてのグローバル Maven プロパティをサポートしているわけではありません。

仕様によると:

${java.home} は、現在の JRE_HOME 環境へのパスを指定し、相対パスを使用して取得します。

少なくとも Eclipse 4.3.1 ではそうではありません。ここでは、ビルド JRE ではなく、Eclipse の起動に使用されjava.homeた JRE を常に指しています。

この問題を修正するには、JDK から JRE を使用して Eclipse を起動する必要がありeclipse.iniます。 -vmargs

-vm
C:/<your_path_to_jdk170>/jre/bin/server/jvm.dll
于 2014-04-17T09:18:08.050 に答える
2

システム スコープの依存関係は絶対に使用しないでください。tools.jar 内のすべてのコードは、すでに実行中の JVM を介して利用できます。この依存関係を完全に削除する必要があります..

また、Maven がどのランタイムを使用しているかを確認するには、呼び出すだけです

mvn -v

問題としてツール jar への依存関係がまだある場合は、追加した依存関係の 1 つにその依存関係があります (そして、それは本当に品質が悪いです)。どちらが実行されているかを調べるには

mvn dependency:tree

または、それが失敗した場合は、上記のコマンドの問題がなくなるまで、依存関係を次々と削除します。

次に、それがどこから来たのかがわかれば、次に何をすべきかを決めることができます。1 つの方法は、ツールを取り込む依存関係を除外することです。

于 2012-11-08T18:04:28.107 に答える
2

Maven ${java.home} プロパティが設定され、Eclipse の実行に応じてさまざまな場所から取得されます。

  • ワークスペース用に選択されたデフォルトの JRE から

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

  • 特定のEclipseプロジェクトから、

    Java ビルド パス>ライブラリ>JRE システム ライブラリ

  • 実行構成から。

    実行構成 > 特定の実行構成 > JRE

JREホームパスがJDKまたはJDKの下のJREを指していることを忘れないでください

于 2014-10-21T09:30:51.260 に答える
2

JAVA_HOME が Eclipse の JRE を指すように設定されているようです。

于 2012-11-08T12:45:10.327 に答える
1

JAVA_HOME 環境変数を追加するとき、パスにスペースがある場合は、全体を引用符で囲む必要があります。

于 2013-02-05T00:08:08.933 に答える
1

間違った Maven インストールを使用している可能性があります。Window > Preferences > Maven > Installations で切り替えます。私はFedora Mavenのインストールに設定しました。デフォルト(m2eに埋め込まれたバージョン)に戻すと、問題が解決しました。

この問題の原因は、Fedora Maven のインストールが Fedora の OpenJDK を使用していたため、おそらく tools.jar が奇妙な場所に配置されたためだと思われます (Fedora の OpenJDK に関するすべてが奇妙で非標準です)。そのため、Maven はそれを見つけることができません。

于 2017-01-19T23:46:26.410 に答える
0

Eclipse で Maven を実行しているようです。Eclipse は JAVA_HOME を参照しません。

Eclipse 設定で JRE を目的の JDK に設定していることを確認してください。

于 2012-11-08T12:34:05.207 に答える