致命的なエラーコンパイル:無効なターゲットリリース:1.8-> [ヘルプ1]


170

無効なターゲットリリースに投稿されたものと同様の問題:1.7ですが、ブログをフォローした後も私の問題は未解決です。

プロジェクトhm_appでゴールorg.apache.maven.plugins:maven-compiler-plugin:3.1:compile(default-compile)を実行できませんでした:致命的なエラーコンパイル:無効なターゲットリリース:1.8-> [ヘルプ1]

この問題に直面したとき、私はチュートリアルとして従っていました

abt java & mvn

C:\mvn>echo %JAVA_HOME% 
C:\mvn>echo %JRE_HOME%
C:\mvn>echo %MAVEN_HOME% yields

出力

C:\Program Files\Java\jdk1.7.0_51
C:\Program Files\Java\jre7
C:\apache-maven-3.0.4

3
...そしてあなたはJava 8がどこかにインストールされていると確信していますか?

私は
x86、64

3
はい。では、なぜJava 8コンパイラなしでJava 8コードをコンパイルしようとしているのでしょうか。

@Makoto tyは、java 8のインストールに関する私の問題を調べて解決しました.... ty man :)
rvd

@まこと最後に、「わかりました。では、なぜJava 8コンパイラを使わずにJava 8コードをコンパイルしようとしているのですか?」そのため、pom.xmlファイルjava.version> 1.8 </java.version>をjava.version> 1.7 </java.version>に変更しただけで、java7でもmvn compileを使用できます
rvd

回答:


281

%JAVA_HOMEjdk 1.7に設定しましたが、1.8を使用してコンパイルしようとしています。jdk 1.8をインストールし、%JAVA_HOMEポイントを確認するか、ターゲットリリースを1.7にドロップします。

無効なターゲットリリース:1.8

ターゲットリリースはjdkバージョンを指します。


7
私の場合、もう1つの可能な解決策は、pom.xmlファイルjava.version> 1.8 </java.version>をjava.version> 1.7 </java.version>に編集することです
rvd

1
具体的には、mavenがjavaバージョンを探す場所です。したがって、Javaのバージョンを実際に%JAVA_HOMEにインストールしたバージョンに変更しました。
Zavior 2015

2
私のMacでは、JAVA_HOME = /usr/libexec/java_home -v 1.8をエクスポートして、JAVA_HOMEを1.8 JDKの適切な場所に設定します。1.8の代わりにお気に入りのバージョンを提供します。(=と8の後にバックティックがあります)。
ブルースszalwinski、2015

はい、そうです。昨日1.7のみをサポートする別のレガシープログラムをコンパイルするように変更しました:Dありがとう!
DavutGürbüz19年

31

プラグインに値を入れます:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
    </configuration>
</plugin>

エラーは使用されました:

<source>${java.version}</source>
<target>${java.version}</target>

2
私の場合、解決策はソースとターゲットの両方を1.7に設定することです
thinkhy

どのファイルでこれを見つけることができますか?
Yusril Maulidan Raji

21

私の場合、Mavenの「実行構成」で間違ったJRE(1.7)が使用されていました。実行->実行構成->(タブ)JREをチェックして、jdk1.8.xになるようにしてください。


これは本当です。そのため、このエラーが発生した場合は、次の点を確認する必要があります。JAVA_HOME、BUILD_Configuration、RUN_Configuration
Farhan

13

JDKが1.7を指しており、JREが1.8を指していたため、問題は解決しました。入力中にコマンドプロンプトをチェックインする

java -version

そして

javac -version.

両方とも同じでなければなりません。  


5

日食のためにここに私が私の問題を解決した方法があります:

  1. 設定->コンパイラ->コンパイラのレベル(1.8に変更) ここに画像の説明を入力してください

  2. 干渉->インストール済みのJRE-> JAVA SE 8 1.8を選択 ここに画像の説明を入力してください

  3. Run as mavenビルドを使用してmaven経由で再ビルドします。

無効なターゲットエラーは表示されなくなります。
注:端末で他の変数を設定または変更する必要はありませんでした。お役に立てれば。


2

これを.profileに入れると、動的に処理されます $JAVA_HOME

export JAVA_HOME=$(/usr/libexec/java_home)

その後、シェルを閉じ、新しいシェルを開いてテストします

echo $JAVA_HOME

次のように表示されます

/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home

そうでない場合は、起動スクリプトからJAVA_HOMEの他の割り当てをすべて削除してください。これらの起動スクリプトはaで始まる.ため、*ワイルドカードを使用しても非表示になり、含まれないことに注意してください。たとえば、ホームディレクトリのすべてのファイルをgrepしたい場合は、次のようにする必要があります。

grep -s JAVA_HOME ~/.* --exclude=.bash_history

1

私が直面していた問題は、コマンドプロンプトからMavenビルドを作成できたが、Eclipseからは作成できなかったことでした.eclipseで私のために機能したのは、実行構成を変更せずに、JDK内のJREフォルダーを指すようにしたことです。 JDKフォルダーは標準に従ってのみ機能します。このソリューションも同様に機能する可能性がありますが、すべてのJavaパスが正しく、javaおよびjavacがpom.xmlのターゲットに存在するものと同じバージョンを示している場合にのみ、これを試してください。


これは私の問題と解決策でした。
Skychan

1

なんらかの理由でJDK 1.7を選択していたため、Dokkuにデプロイするこの問題に直面しました

system.propertiesファイルを作成して設定java.runtime.version=1.8することで問題は解決しました。DokkuはJavaバージョン8 使用 するようになりました。HerokuでJDKを選択する

私は今までそれをする必要がなかった...


ヒントはまだ機能します。DokkuのJavaバージョンを11に変更するには、たくさん検索する必要がありました。ありがとうございました。
ミスターヴァンダービルト

1

Camila Macedoが述べたように、コンパイラプラグインのJavaバージョンを明示的に指定する必要があります。春のブーツの場合、次のプロパティでそれを行うことができます:

  <properties>
    <java.version>1.8</java.version>
    <maven.compiler.release>8</maven.compiler.release>
  </properties>

はい、設定によりmaven.compiler.releaseMavenプロジェクトで修正されました。
Cortex

1

IntelliJを使用して、別の(より高い)JDKバージョンをインストールする必要がありました。IDEを再起動すると、すべてが機能し、依存関係もすべて解決されました。


1
私にとって、intelliJの再起動が鍵でした。JAVA_HOMEの環境変数を更新して別のJavaバージョンを指すようにしましたが、システム変数が既存のCMDセッションで更新されないようです。おそらく、新しいターミナルセッションを作成するだけで十分でしょう。
Ubeogesh

0

この質問はDockerについて明示的に尋ねるものではありませんでしたが、1.9を対象とするpom.xmlファイルがある場合にも同じエラーを受け取りました...

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <maven.compiler.source>1.9</maven.compiler.source>
  <maven.compiler.target>1.9</maven.compiler.target>
</properties>

...しかし、「maven」を単独で指定して、Dockerコンテナーに対してテストを実行しようとしました。

docker run -t --rm -v m2_repository:/root/.m2/repository -v $(pwd):/work -w /work maven mvn -e test

私にとって、修正は私が必要とする正確なバージョンをターゲットにすることでした。

docker run -t --rm -v m2_repository:/root/.m2/repository -v $(pwd):/work -w /work maven:3.5.2-jdk-9 mvn test

詳しくはこちらをご覧ください)。


0

Windowsマシンでは、Javaバージョンを一時的に設定できます。
たとえば、バージョンをJava 8に変更するには、次のコマンドを実行しcmdます:

set JAVA_HOME=C:\\...\jdk1.8.0_65

0

互換性のある1.8 Jarバージョンをもたらす強制Maven更新を実行し、ビルド中に、実行環境のJREバージョンを実行構成から1.8に更新し、RUNを押します。


0

Eclipse IDEを使用している場合は、ウィンドウメニュー内に移動して設定を選択し、インストールされているJREを検索して、プロジェクトのビルドに必要なJREを選択します。


-4

私の場合にうまくいったのはこれです:

を開き、pom.xml以下のようにプラグインの1つを置き換えました。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.2</version>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
    </configuration>
</plugin>

ソースタグとターゲットタグの両方を編集する前に1.8、それをに変更し1.7て機能しました。


あなたが行った変更を理解していますか、それとも最善を期待して変更を加えただけですか?
ポパイ

両方とも。プロジェクトがJava 1.7バージョンで実行されていることを理解しています。私はそれがうまくいくことを期待してそれをしました。
VIJAYKUMAR REDDY ALAVALA 2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.