Mavenビルドに失敗:「Javacコンパイラが見つかりません:jreまたはjdkの問題」


112

JAVA_HOMEを次のように設定しています。

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

を実行するとmaven installEclipseから次のメッセージが表示されます

理由:

Unable to locate the Javac Compiler in:
  C:\Program Files (x86)\Java\jre6\..\lib\tools.jar
Please ensure you are using JDK 1.4 or above and
not a JRE (the com.sun.tools.javac.Main class is required).
In most cases you can change the location of your Java
installation by setting the JAVA_HOME environment variable.

これはトリッキーな部分だと確信しています

JREではなくJDK 1.4以上を使用していることを確認してください

構成を実行すると、JRE6に設定されます。インストール済みのJDK 1.6に変更するにはどうすればよいですか?

私もプラグインを変更しようとしました:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.0.2</version>
    <configuration>
        <source>1.6</source>
        <target>1.6</target>
        <executable>C:\Program Files (x86)\Java\jdk1.6.0_18\bin</executable>
    </configuration>
</plugin>

それでも同じエラーが発生します。

私はEclipse Mavenプラグインを使用しています。EclipseでJREからJDKに変更するにはどうすればよいですか?


コマンドラインsetコマンドを使用して、JAVA_HOMEが意図したとおりに設定されていることを確認しましたか?
Powerlord、2010

私は日常的にJavaを使用しています...すべてはそれがここに罰金を動作します: java -version .6.0_18-ea" time Environment (build 1.6.0_18-ea-b04) ) Client VM (build 16.0-b11, mixed mode, sharing)
ガンダルフStormCrow

1
実行可能ファイルを設定するときに<fork> true </ fork>を設定します。
ロビン

実際には、どのJavaインストールjava -versionが実行されているかはわかりません。JREまたはJDKのインストールである可能性があります。 javac -versionもう少し便利でしょう。ただし、PATHが正しく、JAVA_HOMEが間違っている場合でも、期待どおりに表示されます。
Powerlord、2010

1
また、実行可能ファイルは... \ bin \ javacである必要があります。パスだけでなく、実際の実行可能ファイルを指定する必要があります。
ロビン

回答:


141

次のように、Eclipseが使用しているJDKを更新してみてください。

メニューウィンドウ設定...Javaインストール済み JREでJREを追加して設定します。

JRE type: Standard VM JRE
Name: jdk1.6.0_18
JRE home directory: C:\Program Files (x86)\Java\jdk1.6.0_18

そうでない場合は、JAVA_HOMEパスの角括弧とスペースが問題を引き起こしている可能性があります。JDKを別の場所にコピーして、JAVA_HOMEを更新してみてください。


1
それは確かにあなたの質問の最初の部分です、JAVA_HOMEは大丈夫です
Gandalf StormCrow

47
私には追加の手順が必要でした:上記のプロジェクトのプロパティに移動-> Java
ビルドパス

1
私には十分ではなく、eclipse.iniを編集する必要がありました。バグがあると思います。
ruhsuzbaykus、2011年

実行環境->互換性のあるJREで適切なjdkをチェックした場合にのみ機能しました。
Vedran、2012

9
さらに、これらの構成変更の前に作成したEclipse実行構成からMavenを実行する場合は、「構成の実行」ウィンドウ/「JRE」タブに移動し、適切なJREを選択することを忘れないでください。そうしないと、Eclipseとプロジェクトの設定を新しいものに更新した後でも、古い間違ったJREを使用している可能性があります。
ダイアナ

20

ファイルeclipse.iniにはvm JDKの場所を指す引数です。

eclipse.ini次のように、ファイルを編集してJDKホームを指すようにします。

-vm
C:\Program Files\Java\jdk1.6.0_06

これにより、EclipseがJDKで実行され、マシンのデフォルトのJREでは実行されなくなります。


5
これで問題が解決しました。Webでの調査から、MavenはJAVA_HOMEを使用しているように見えますが、MavenプラグインはJAVA_HOMEについて何も認識せず、代わりにデフォルトでEclipseの起動に使用されるVMを使用します。
jnosek

13

試してみて:

に移動してPreferences/Java/Installed JREs、その場所"C:\Program Files\Java\jdk1.6.0_27\jreなどに1つ追加します。

を削除します C:\Program Files\Java\jre6

ご覧のとおり、パスC:\Program Files\Java\jre6\..\lib\tools.jarは、最初の部分(/ ..まで)がに置き換えられた場合にのみ意味がありC:\Program Files\Java\jdk1.6.0_27\jreます。


10

フォークをtrueに設定すると、問題が解決しました。

<configuration>
    <fork>true</fork>
    <source>1.6</source>
    <target>1.6</target>
</configuration>

9

私はまったく同じ問題を抱えていました!私が検索し、日を探していたのでに関するすべてのせせらぎ「-vm C置く:\プログラムファイルを\ javaの\ jdkxxxxx \ binに」INI ARでのショートカットの引数は、同じようにすべてのヘルプではありません

(私はイライラしているように聞こえますか?私を信じてください、それは控えめな表現です!Mavenを信頼できるものにするために1週間を失ったので、私は単に激怒しています!)

私は非常に予測できない行動をしました。コンパイルされることもあれば、コンパイルされないこともあります。私がした場合maven clean、コンパイラが見つからず失敗しました。その後、ビルドパスの何かを変更した場合、突然再び動作しました!!

メニューウィンドウ設定JavaインストールされたJREに行くまで。JDKの場所を使用して新しいJREを追加し、JREを削除しました。突然メイブンは安定して走りました!

たぶん、Apacheのマニュアルにfont-size 30程度の文字を入れる価値はありますか?

当然のことながら、これはJavaコミュニティにとってとんでもないことです。このような問題を解決しようとして、これらの人々がどれだけの日を失ったかは想像できません。これが最終版としてリリースされるとは思えない。私は個人的にはベータソフトウェアという名前でそのようなものをリリースすることすらしません...

どちらにしてもよろしいです...改ざんの1週間後、ようやく開発を開始できます。私の上司がこれについて知らないことを望みます。.NETに行かないように彼を説得するために私は多くの努力をしました、そして私はすでにそれについて申し訳ありません。



eclipse ... m2eの問題です。私は同じ問題を抱えており、他のIDE(netbeansおよびIDEA)は完全に動作します。
ジョシュア2012

3

Run as-> Maven install in Eclipseを使用して同じ問題が発生しました。JAVA_HOMEとeclipse.iniは問題なく、最新のJDKを指しています。しかし、m2clipseはJREを使用しました。Eclipseの外でmvn installを使用すると問題なく動作しました。

私の場合、私は次のように問題を解決しました:

  1. Eclipseでナビゲートします:メニューウィンドウ設定JavaインストールされたJRE
  2. JREとJDKの2つの非アクティブなエントリがありました。アクティブなものは、最後にインストールされたJDKでした。Mavenが使用する必要があるもの以外のすべてのエントリを削除します。

Mavenはどちらがアクティブであるかを考慮していないと思います...



3

私は、Mavenの3.0.4インストール設定されているM2_HOMEM2そしてJAVA_HOMEそれに応じて。次に、次のコマンドを実行しました。

mvn archetype:generate....

mvn compile

次のような失敗したメッセージが表示されましたmaven unable to locate javac compiler

私のコンピューターでは、デフォルトでJREがC:\ program files \ java \ jre.1.6にインストールされています。そして、もう1つのC:\ java \ jdk1.6がありJAVA_HOME、このC:\ java \ jdk1.6に設定します。

設定に問題はありませんでした。検索した後、調べてみることにしましたmvn.bat%JAVA_HOME%すべてのステップをエコーし、正しくと表示されましたC:\java\jdk1.6が、コマンドを実行すると、mvn --versionJavaホームが表示されました。C:\ program files \ java \ jre1.1.6

最後に、-Djava.home=c:\java\jdk1.6以下のコマンドのように設定するだけで問題なく動作することがわかりました。

%MAVEN_JAVA_EXE% %MAVEN_OPTS% -classpath %CLASSWORLDS_JAR% "-Dclassworlds.conf=%M2_HOME%\bin\m2.conf" "-Djava.home=%JAVA_HOME%" "-Dmaven.home=%M2_HOME%" %CLASSWORLDS_LAUNCHER% %MAVEN_CMD_LINE_ARGS%

注:これはmvnコマンドライン用であり、Eclipseでは使用できません。


ねえ、あなたは行って、あなたがした各ステップを常に説明する必要はありません。ポイントへの回答方法をご覧ください。
mtk 2012年

それはハックのように見えますが(それでもうまくいくのなら...)Mavenコマンドラインが間違ったJavaホームを取得するのは興味深いことです-これが現在の問題です。
プラズマ147

2

インストールされたJREの場所をJDK自体に存在するディレクトリに変更することで問題を解決しました。適切な値の設定JAVA_HOME環境変数のても問題は解決しませんでした。

私の場合、2つのディレクトリがあります。

  • C:\Program Files\Java\jdk1.7.0_03 --> For JDK

  • C:\Program Files\Java\jre7 --> For JRE

最初C:\Program Files\Java\jre7はEclipseでInstalled JREとして設定しましたが、Mavenの場合も同じエラーが発生しました(Antは正常に動作していました)。

インストールされているJREを C:\Program Files\Java\jdk1.7.0_03\jre7インストール済みのJREをEclipseでインストール問題は解決します。


2

特定のEclipse構成からプロジェクトを実行している場合は、適切なJDKを追加した後、「Run Configurations」->「Your maven configuration」->「JRE tab」でJavaランタイムを変更する必要があることを忘れないでください。 Eclipse設定。


2

MavenはJDKではなくJREを使用しているようです。おそらく、JDKをインストールする前にMavenをインストールしましたか?

設定ファイルを確認してください。システム、ユーザー、プロジェクトの3つがあります。ほとんどの場合、インストール構成($ M2_HOME / conf / settings.xml)、またはユーザーごとの構成($ {user.dir} /。m2 / settings.xml)にあります。


2

Eclipseセットアップのみ

次の手順を実行します。

  1. Eclipseプロジェクトのプロパティを右クリックします

  2. Javaビルドパス →ライブラリ

  3. JRE System Libraryを選択→ Editボタンをクリック

  4. 「Installed JREs ...」ボタンをクリックします

  5. JREを次のように編集します。JREホーム= JAVA_HOMEまたはJAVA_HOME \ jreを設定します。

スクリーンショット:

ここに画像の説明を入力してください


これでうまくいきました。ありがとうございます。JREホームをJDKフォルダーに変更しました。
LadyBernkastel 2014年

1

メニュープロジェクトを右クリック→ プロパティJavaビルドパス

JREシステムパス→ 編集を選択します。ワークスペースのデフォルトJREを選択し、JDK> 1.4をポイントします。


1

メニューウィンドウ設定Javaインストール済みJRE実行環境 ->右側のチェックボックスをクリックします。


1

解決策は簡単です。Eclipse ウィンドウ設定JavaインストールされているJREC:\Program files\Java\jreます。

変更するとC:\Program files\Java\JDK 6.0\jre100%動作します。


1

他のいくつかの人が述べたように、Eclipse ウィンドウ設定...JavaインストールされたJREは、JRE ではなく、インストールしたJDKを指す必要があります。そうして初めて、エラーメッセージに示されたフォルダを見つけることができます。../lib

これでも、問題が再発する可能性があります。Eclipse v4.2(Juno)での私の方法は、メニューMavenUpdate project ...を実行することです...を実行することその後、問題は消えます。

理由は、Eclipseで生成されたファイル(.classpath、.project、.preferences)のいくつかが、これらの問題が発生しているプロジェクトのSubversionにあるためだと思います。したがって、SVNの更新により問題が発生し、EclipseでのMavenからの構成の更新により問題が再度解決されます。

実際の解決策:バージョン管理からEclipseで生成された.filesを省略し、Maven Eclipseプラグインにプロジェクト構成を処理させます。(追加のポインタ/提案は大歓迎です)



1

Amazon Linuxでも同じ問題が発生しました。JDKの開発者バージョンをインストールする必要があることがわかりました。

sudo yum -y install java-1.7.0-openjdk-devel

1

Eclipseのメニューに移動しますウィンドウ設定...Javaインストール済みのJREは、JREではなく、インストールしたJDKを指している必要があります。


しかし、これは以前の多数の回答にもあります。
Peter Mortensen

0

また、Eclipseにすべての更新された変更があることを確認することもできます。これを行うには、プロジェクトを右クリックして、[更新]メニュー項目を押します。


0

他の多くの答えは、EclipseがJREではなくJDKを指すように指示します。

これは、より具体的/明確な別の回答です([ここでの回答で見たものよりも])、それを行う方法のステップバイステップ: JDKをどのようにインストールしますか?

これが、同じ問題を解決した理由です。



0

コンパイラの場所は、JAVA_HOMEが指しているJDKの場所ではなく、表示されたJREの場所にあるコンパイラプラグインのPOMで定義されていると思います。


@ロビンどこに正確にそれを探すべきですか?ポンポンは私には元気に見えます<groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.0.2</version> <configuration> <source>1.6</source> <target>1.6</target>
ガンダルフストームクロウ

<executable>が定義されていない場合、これは問題の原因ではありません。ただし、見ているpomが、それが定義されている親pomから継承していない場合を除きます。
ロビン

実行可能ファイルを定義するときは、<fork>をtrueに設定する必要もあります。
ロビン

0

あなたは指定する必要がありJAVA_HOMEmvn.ini(それはMavenのフォルダにあります/bin)、そして、あなたの問題が消えます。


0

JAVA_HOMEを設定しても問題が解決しない場合は、以下を試してください。

(新しくインストールしたPCでも同じ問題が発生しました。)

Eclipseを使用していると仮定します。

  • オープンウィンドウ設定JavaはJREのインストール。そこにあるものをすべて削除し、使用したいものを追加します(JDK、JREなし!)
  • 同じウィンドウでmaven-installationsを開き、ダウンロードしてどこかに抽出したMavenインストールを追加します。(組み込みMavenインストールを使用しないでください。既知のバグがいくつかあります。)

それで全部です。あなたのプロジェクトはそのような問題に悩まされることはありません。


0

JUnitバージョンのため、同じエラーが発生しました。3.8.1が3つありましたが、4.8.1に変更しました。

したがって、解決策は次のとおりです。

POMに移動し、依存関係が次のようになっていることを確認する必要があります

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.8.1</version>
  <scope>test</scope>
</dependency>

0

maven-compiler-pluginの設定を追加executablefork、値をtrueに変更しました。

<configuration>
    <fork>true</fork>
    <source>1.6</source>
    <target>1.6</target>
    <executable>C:\Program Files\Java\jdk1.6.0_18\bin\javac</executable>
</configuration>

それは私のために働いた。


0

Echo %JAVA_HOME%てからmvn --version

JREのパスが同じである必要があります...そして、メニューに行くウィンドウPreferences]をジャワインストール済みJREの場所は、何と同じである必要がありますJava_Home示しています。


0

行くのプロパティプロジェクトのダイアログ、右クリック。

リンクされたリソース、JAVA_HOMEという新しいパスを追加し、「C:\ Program Files \ Java \ jdk1.8.0_73」のようなJDKの場所に配置します。

それで全部です!!


変数を追加する必要はないと思います。「seetingsをワークスペースに実行」の下のJDK設定を変更するだけです
Phani

0

この問題の解決策は非常に簡単です...

Antビルドファイルがない場合は生成します。Eclipseでは、Antファイルを簡単に作成できます。

Antビルドファイルを作成するためのリンク[ http://www.codejava.net/ides/eclipse/how-to-create-ant-build-file-for-existing-java-project-in-eclipse]を参照してください

与えられたステップに従ってください:

1)ビューウィンドウにあるAntビューにAntビルドファイルを追加します。

2)Antビルドファイルを右クリックし、[別のユーザーとして実行 ]とその "Antビルド"の2番目のオプションを選択します

3)ダイアログボックスが開き、さまざまなオプションとタブが表示されます。

4)「JRE」タブを選択します。

5)3つのラジオボタンが表示され、オプションとしてJREまたはJDKが選択されます。

6)ラジオボタンオプションでJREが選択されているかどうかをよく確認し、それをJDKに変更します。ます。

7)[適用]をクリックします。

それでおしまい...!!!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.