23

Eclipse で Maven を使用して webapp プロジェクトを作成しました。コマンドプロンプトでコマンド mvn package を実行すると、次のエラーが表示されます。

[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.310s
[INFO] Finished at: Tue Mar 05 14:32:23 IST 2013
[INFO] Final Memory: 16M/218M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.0:compile (default-compile) on project  Compilation fa
ilure
[ERROR] ***No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?***
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

jdkとjreを変更しようとしました。しかし、機能していません。それでも同じエラーが表示されます

4

12 に答える 12

49

Windows 7 - 64 ビットでは、権限の問題があり、インストーラーがファイルC:\Program Files\Java\jdk1.6.xx\lib\tools.jarをローカルに解凍できません。この jar ファイルは、maven-compiler-pluginバージョン 3.x が通常の代わりに使用するものです。javac

解決策: 管理者として Java JDK インストーラーを実行してください。tools.jarが に座っていることを確認しますC:\Program Files\Java\jdk1.6.xx\lib\

m2e maven 統合プラグインを使用している場合は、Eclipse 内で次の手順を実行して、ファイルが Eclipse に表示されることを確認します。

  • [ウィンドウ] -> [設定] -> [Java] -> [インストール済みの JRE] に移動します。
  • 使用している JDK を選択します (C:\Program Files\Java\jdk1.6.xx)
  • [編集] を押して、tools.jar を含む jar のリストを表示します。OW は、[外部 JAR の追加] として追加できます。

次に、次の手順で Maven の実行を構成します。

  • 実行->実行構成->名前、ベースディレクトリ、および目標を入力します。
  • 次に、同じウィンドウで JRE タブに移動し、JDK \jdk1.6.xx\ をポイントします。
于 2013-04-19T22:06:42.373 に答える
3

これを試して。[ウィンドウ] --> [設定] --> [Java] --> [インストール済みの JRE] に移動します。

インストール済みの JRE 内にある JRE をダブルクリックします。

JRE ホームでJDK パス (例: C:\Program Files\Java\jdk1.7.0_80\) を指定し、JRE 名を JDK として指定します。[完了] をクリックし、[OK] をクリックします。

私にとってはうまくいきました。

于 2015-09-16T19:22:58.410 に答える
1

私の場合、「この環境ではコンパイラが提供されていません。JDK ではなく JRE で実行している可能性があります」というエラーは、JRE が JDK のデフォルトとは異なる場所にインストールされていることが原因でした。

64 ビット Linux で実行し、Oracle の 64 ビット JDK SE 1.6.0_45 を にインストールしました/opt/java。32 ビットと 64 ビットの JRE は、jre シンボリック リンク (つまり、./jre64 /opt/jdk/jre /opt/jdk/jre64) を使用して および にインストールされまし/opt/java/jre32た。/opt/java/jre64ln -s jre64 jrejre ->(meaningwas a symlink referencing

jre64 の名前を jre に変更すると (つまりrm jre ; mv jre64 jre ; ln -s jre jre64)、この問題はなくなりました。そして、maven(netbeansの内部)を使用してビルドできました。

Maven は JRE パスを調べているようで、「jre64 はデフォルトの JRE-inside-of-JDK インストールの正しい名前ではないため、../ に JDK が存在しないと想定してください」と言って、それを妨げます。 tools.jar などを含む JDK lib ディレクトリの場所の解決から。

テストはしていませんが、JRE がデフォルトの場所にない場合 (またはおそらく%JAVA_HOME%\jreディレクトリにない場合)、Windows でも同じことが起こる可能性があります。JDK と JRE の両方がインストールされている場合、Oracle のインストーラーは JRE をe%JAVA_HOME%\jre6ではなくにインストールしようとします。%JAVA_HOME%\jrこれは\jre、JDK のアンインストール プロセスにディレクトリが必要なためである可能性があります。\jreJRE が 6ではなく、ディレクトリ内の JDK の JRE の上にインストールされている\jre場合、\jre ディレクトリがコピーされ、JRE がアンインストールされ、\jreコピーが に復元されない限り、JRE のアンインストール後に JDK をアンインストールすると失敗し\jreます。

于 2013-08-15T17:18:18.257 に答える
1

に行くpreferences>installed JRE>

次にクリックadd

選択する C:\program files\java\

押すenter

jdk以外のjreを検索し、選択されていないものを選択します

于 2016-01-27T10:07:27.340 に答える
0

私は Eclipse (V3.3) 用の maven プラグインを使用しており、しばらくこのエラーに悩まされていました。最後に、古い Java ソースにリンクされているソリューションを見つけました。JRE や JDK とは関係ありません (私は JRE 1.7 を使用しています)。

他のフォーラムで、これが maven-compiler-plugin の既知の問題であることを発見しました (V3.3 と 3.5.1 で同じ結果)。

そのため、古いソースを手動で再コンパイルし、目標を再度実行しましたが、今回は問題ありませんでした。

古いソースを見つけるには、オプション -X (デバッグ) を指定してゴールを実行し、で始まるエントリを探します。

[DEBUG] Stale source detected:

Java クラス ファイルを示します (手動で再コンパイルする必要があります...)。

Maven コンパイラーからのメッセージにより、間違った方向 (JRE、JDK、JAVA-HOME などで遊ぶ) で検索したため、これが役立つことを願っています。

于 2016-06-04T15:49:56.737 に答える