私はm2Eclipseを使ってEclipseでプロジェクトをコンパイルしています。私はEclipseのJDKパスをこのように設定しました。
Windows-->preferences-->installed jres--> jdk1.7.xx path
しかし、これはエラーを示しています
[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: 1.424s
[INFO] Finished at: Tue Oct 29 15:21:01 IST 2013
[INFO] Final Memory: 5M/15M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.Apache.maven.plugins:maven-compiler- plugin:3.1:compile (default-compile) on project TEST-WEB: Compilation failure
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
さらに、Maven JRE(@ jlars62の回答を参照)を次のように変更する必要があるかもしれません。 [実行] - > [実行構成]の順に選択し、実行していたMavenビルドを(左側のパネルから)選択します。それから、JREタブをクリックし、Workspace default JREオプションを選択しました。
私にとって、それはまさにEclipseのメイバーが不満を言うものです
それで、私はEdit
ボタンを押してJDKフォルダへのパスを変更し、それからプロジェクトをきれいにすれば全てが動き始めます
私にとっては、このpom.xmlにこの変更を加えるまで何もうまくいきませんでした。
<build>
...
<plugins>
...
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<fork>true</fork>
<executable>C:\Program Files\Java\jdk1.7.0_45\bin\javac.exe</executable>
</configuration>
</plugin>
</plugins>
</build>
その他の注意事項
M2eがJDKではなくJREで実行されていたことがわかりました。これをEclipse.iniに追加するなど、これを変更したものは何もありません。
-vm
C:\Program Files\Java\jdk1.7.0_45\bin\javaw.exe
結局、m2eをJDKで実行することはできませんでしたが、Javaコンパイラを明示的に(上記のように)設定することでうまくいきました。
Java_HOME
環境変数をJDKルートフォルダに設定します - コマンドラインまたはmavenを実行する場合に必要です(mvn
)。Java_HOME
を検索してください)Eclipse内からMavenビルドを行おうとしたときにこのエラーが発生しました。
私にとっては、答えはRun
- > Run Configurations
で、私が実行していたMaven Build
を選択していました(左パネルから)。それから、JRE
タブをクリックして、オプションWorkspace default JRE
を選択しました。
私は上記のすべてを試したが、それでも同じエラーメッセージが表示されます。
私の場合、実際のJREはプロジェクト固有のビルドパスでJREシステムライブラリとして誤って使用されていたため、ここで説明した他のすべての設定は明らかに上書きされていました。
そうであれば、次のことを試してください。
Jaipsterの答えがうまくいかない場合の代替策は、次のURLに移動することです。
ウィンドウ>設定> Java>インストール済みのJRE
次に、jreを編集してjreではなくjdkを指すようにします(jre homeはjreパッケージエディタにあります)。
それは私のために働いた。
私は同じ問題を抱えていて、私はJava_HOME
を 環境変数 に追加するだけです。
Java_HOME
openコマンドをプロジェクトディレクトリから起動し、mvn clean install
を実行した直後(intellijターミナルは使用しないでください)。mvn clean install
を使用してプロジェクトアプリケーションのjarファイルを作成しようとしたときに同じ問題に直面しましたが、アプリケーションはEclipseから実行中に正常に機能していました。
問題は、実に単純すぎて、Java_HOME環境変数を設定していなかったことです。 Java_HOME環境変数をJDKディレクトリに設定するだけで、 "\ bin"およびセミコロン「;」。
私がそれを理解した方法は次のとおりです:
Eclipseでは、JRE System Libraryが、JDKのない外部JREフォルダーではなく、JDKフォルダーinsideを参照していたため、アプリケーションは正常に動作しました。 [他の回答で非常によく説明されているように]
この構成は、コマンドプロンプトで実行するmavenコマンドには適用されません。 Java_HOME変数を探してJREシステムライブラリにアクセスし、見つからない場合は、JDKのない外部JREフォルダーを参照します。
Maven
からcmd
コマンドを実行している場合は、コマンドを実行する前に必ずjdkパスを設定してください。私の場合は、次のものを含む.bat
ファイルを作成しました。
set Java_HOME=C:\Program Files\Java\jdk1.8.0_60
start cmd.exe /k "cd c:\aem_proj\sis\aau"
指定するオプションがいくつかあります。
手順:プロジェクトエクスプローラでプロジェクトを右クリックし、[実行] - > [実行構成] - > [Mavenビルド]をクリックします - >ビルド構成をクリックするか、新しい構成を作成します。あなたは下の与えられたスナップショットとして窓を見るでしょう、そこにJREタブをクリックしてください。
3つのオプションがあります1)ワークスペースのデフォルトJRE 2)実行環境3)代替JRE 1)ワークスペースのデフォルトJREは上部の「ウィンドウ」メニューから設定されます - >設定 - > Java - >インストールされたJRE - ここであなたのjdkを追加することができます 2)実行環境jdkは@ksnortumで説明されているようにpom.xmlで設定できます。
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<fork>true</fork>
<executable>C:\Program Files\Java\jdk1.7.0_45\bin\javac.exe</executable>
</configuration>
</plugin>
</plugins>
3)代替JREを使用して、ディレクトリからjdkを選択できます。
私にとっては、JREはJDKパスの前のPATH環境変数にありました。
だから私は1を削除しました。おそらくそれらを交換することもそれを修正するでしょう。
この質問に対するもう一つの可能な答えがあります、そして私はこれにつまずくほど十分に愚かな人かもしれませんが、私はそれらの設定がすでに正しいので他の答えのどれも適用されなかったので私はそれを加える価値があると思います。
JDKをインストールすると、インストーラはファイルをどこにインストールするかを尋ねます。デフォルトでは、Windowsでは、これはC:¥Program Files¥Java¥jdk1.8.0_74(またはインストールしているバージョン)に似ています。
それはそれからJREをインストールするディレクトリを頼みます、それはデフォルトでC:\ Program Files\Java\jre1.8.0_74のようなものです。
1つは jdk 1.8.0_74で、もう1つは jre 1.8.0_74です。
急いでいて、インストーラが私に同じ質問を2回していると思って、私のJDKとJREの両方のインストール場所をD:\ devtools\jdk\jdk1.8.0_74に設定すると、インストーラはJREでJDKを上書きします。これは、(とりわけ)私のJDKビンにjavac.exeが欠落していたこと、およびOPがここで報告したのと同じエラーがすべての私のmavenビルドで発生したことをもたらします。
うまくいくまで、この問題で3時間を無駄にしました。 mvn compileコマンドを発行すると、Eclipseターミナルでこのエラーが発生しました。
この環境ではコンパイラは提供されていません。おそらくあなたはJDKではなくJREで走っていますか?
だから私はここで私はJava_HOMEと呼ばれる新しいシステム変数を作り、それをjdkインストールフォルダの方に向ける必要があることを読んだ。しかし、これは別のエラーを生成しました:
ソースオプション1.5はサポートされなくなりました。 1.6以降を使う
これに対する修正が見つからなかったので...
それで、すべて解決するための修正は、Java SE Development Kit 8をインストールすることです。 私は9を使用していましたそれが最新のものであればそれが良くなければならない...
とにかく...
ここからJDK 8をインストールします。 http://www.Oracle.com/technetwork/Java/javase/downloads/jdk8-downloads-2133151.html
次に、Java_HOMEシステム環境値を定義します - チュートリアルはこちら: https://docs.Oracle.com/cd/E19509-01/820-3208/inst_cli_jdk_javahome_t/
Eclipseを再起動してお楽しみください。 (少なくともそれは私がしたことです)
これを願って貧しい人々が何らかのトラブルを免れることを願います。
私の場合は、システム変数パスに "C:¥ProgramData¥Oracle¥Java¥javapath"という場所がありました。
「C:¥ProgramData¥Oracle¥Java¥javapath」ロケーションのJavaでは、そこにのみjavawがあります。だから私は同じエラーを受けています。
"C:¥ProgramData¥Oracle¥Java¥javapath"フォルダ内のすべてのファイルを削除したら、エラーが解決しました。
問題のあるステートメント =この環境ではコンパイラは提供されていません。おそらくあなたはJDKではなくJREで走っていますか?インテリ
解決策
この問題を解決するには、以下のように Environment variabl eを設定してください。
変数名 :Java_HOME
変数値 :C:\ Program Files\Java\jdk1.8.0_202
変数名 :M2_HOME
変数値 :C:\ Program Files\Apache-maven-3.6.0
さらに 、以下のように " システム変数 "にJavaとmavenのパスを追加します。
C:¥Program Files¥Java¥jdk1.8.0_202¥bin
C:\ Program Files\Apache-maven-3.6.0\bin
Javaがすでにインストールされた状態で新しいEC2 ubuntu 16.04インスタンスを作成したときにmvn cleanパッケージを実行しているときに同じエラーが発生し、以下の解決策がうまくいきました。
Ubuntuサーバーで作業しているのであれば、Javaをもう一度インストールしてみることができます。そのためには、この答えを使用できます Ubuntu LinuxにJDKをインストールする方法
これを試して。
<build>
...
<plugins>
...
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<fork>true</fork>
<executable> path to jdk \bin\javac.exe</executable>
</configuration>
</plugin>
</plugins>
</build>
私のために働いた、新しいJRE定義を(パスJDKを選択)を追加します。
私は同じ問題に直面した、私がした間違いは私はjdkのパスではなく、パスのvarにのみjreのパスを追加したことです。
私はほとんどの答えを成功せずに試した。私のために働いたのは(/の後に https://stackoverflow.com/a/21279068/2408893 ):
上記の回答に加えて、Mavenを端末から(Eclipseの外部で)実行してみてください。このように、それが外部からではなくEclipseで構築されていれば、問題はEclipseにあるべきであることを理解することができます。
この質問に関していくつかの回答がありますが、すべてJDKのライトパス設定に関連していますが、JREだけでこの問題を解決できます。
デプロイメントアセンブリを利用して、Java EEプロジェクトのパッケージ化されたwarファイルのパスを設定してから、maven-installを再実行するだけです。
展開アセンブリを利用する手順
Jave EEプロジェクトを右クリック - >プロパティをクリック - > Deployment Assemblyをクリック
「追加」ボタンをクリックします - >「ファイルシステムからアーカイブをクリックする」 - >「次へ」をクリック - >「追加」をクリック - > .m2\respositoryディレクトリに移動し、生成されたwarファイルを検索 - > warファイルを選択 - > Openボタンをクリック - > Applyをクリック - > OK
プロジェクトを右クリックし、Run Asの下のMaven Installをクリックします。
これにより、コンパイラエラーなしでプロジェクトが正常にビルドされます。
これがJDKなしで問題を解決することを願っています。
私はPreferences - > Java - > Installed JREsに行きました。ここにはJDKはありませんここでJREだけを見ました。そこで私はJDKを追加しました。
ここで、チェックを外すのではなく、JREを強制的に削除する必要があります。
あなたはどんなMavenビルドも見逃していますか。
上記のJREの変更とは別に、私はまだ同様の問題に直面していました。それがうまくいっていることを追加した後に私はJUnitの依存関係を逃していました。
これが役立つことを願っています。