Mavenの更新後、Javaバージョンが自動的にJava 1.5に変更される


120

私は日食をIDEとして使用しています。プロジェクトを右クリックして[maven]をクリックすると、Javaバージョンが1.5に更新されます。これが私がこれまでに行ったことです、私はここにリストされているすべてのステップに従いました

http://qussay.com/2013/09/13/solving-dynamic-web-module-3-0-requires-java-1-6-or-newer-in-maven-projects/

  1. 「Javaビルドパス」を「ワークスペースデフォルトjre 1.8.0_25」に変更しました
  2. 次に、「Javaコンパイラ」を1.8に変更しました
  3. 次に「project facets "> java> 1.8」を変更しました
  4. pom.xml Javaバージョンを1.8に変更
    <build>
        <plugins>
            <plugin>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
                <version>9.1.3.v20140225</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugin</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

結局、「Maven update」をクリックすると、Javaのバージョンが自動的に1.5に変わります。また、上記のステップでは、最初の2つのステップのバージョンも自動的に1.5に変更されます。どうすれば修正できますか?

回答:


222

pom.xmlファイルを開き、次の行を追加します。

<properties>
   <maven.compiler.source>1.8</maven.compiler.source>
   <maven.compiler.target>1.8</maven.compiler.target>
</properties>

1.8現在のJDK / JREのJavaバージョンはどこにありますか。これを行う別の方法は<build>maven-compile-pluginasを

<build>
<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.2</version> <!-- or whatever current version -->
    <configuration>
      <source>1.8</source>
      <target>1.8</target>
    </configuration>
  </plugin>
</plugins>
</build>

編集

Javaバージョン9以降で動作するようにする方法を探している場合は、@ JDeloreanの 回答をここで確認してください。また、彼に賛成票を与えることを忘れないでください。


4
私はすでに2番目の方法を実行し、コードも投稿したと思います。そのコードで何を変更したのか分からない
asdlfkjlkj

1
うん。私が答えたとき、あなたはコードを投稿していません。だから、私の答えの最初の部分を追加します。propertiesタグ。POMに既にpropertiesタグがある場合は、タグをその中に追加するだけで問題なく動作します。
ホルヘカンポス

@asdlfkjlkjあなたの日食は組み込みMavenまたは外部Mavenインストールを使用していますか?あなたの日食がJREまたはJDKを指している別の質問?これは、すべての違いを生むEclipse + Mavenに関する2つの質問です。
ホルヘカンポス

@JorgeCampos-新しい質問を投稿しました。あなたはそれについて何か考えがありますか?stackoverflow.com/questions/42855512/...
哀愁

@JorgeCampos maven-complier-plugin追加する場所はどこにあります<build>か?ありがとう
夢のの夢

23

Java 9をインストールしたときに同じ問題が発生しました。プロジェクトのデフォルトはJ2SE-1.5実行環境です。奇妙なことに、Java 9準拠レベルは以前のバージョンのように参照されていません。つまり、「1.8」ではなく「9」です。だから私はそれに応じて私のプロパティとMavenコンパイラプラグイン設定を提供する必要がありました:

<properties>
    <maven.compiler.source>9</maven.compiler.source>
    <maven.compiler.target>9</maven.compiler.target>
</properties>

そして

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

これで問題は解決したようです。


1
また、Java 10+にも当てはまり、マルチモジュールのMavenプロジェクトに親POMでのみ必要であることを追加したいと考えています。
mmeany

Java 9以降では、--release <version>ソース/ターゲットよりも優先される新しいコンパイラオプションがあります。これは、maven-compilerプラグインのmaven.compiler.releaseプロパティまたは<release>設定で構成できます。参照:stackoverflow.com/questions/43102787/...
トーマス・テイラー

7

この問題の根本的な原因は、何らかの理由で Eclipse がpomから.classpathファイルを生成/更新するときにプロパティの有効な値を解決できないmaven.compiler.source場合、デフォルトでを使用することですorg.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5

@ jorge-camposが専門的に回答したように、そのプロパティを設定するには複数の方法があります。

しかし、ホルヘの答えは私にはうまくいかなかったようです。これが私の設定です:

<properties>
    <javaVersion>1.8</javaVersion>
    <maven.compiler.source>${java.version}</maven.compiler.source>
    <maven.compiler.target>${java.version}</maven.compiler.target>
</properties>

...

丁度。(完全に異なる)プロパティに解決されること${java.version}なくjavaVersion、Eclipseはプロパティを無視してデフォルトを使用しました。

これで、「何らかの理由で」開いた部分に戻ります。開発者の愚かさがその理由の1つになる可能性があります。


1
org.eclipse.jdt.launching.JRE_CONTAINER / org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType / J2SE-1.5を変更する方法
aName

「開発者の愚かさはそれらの理由の1つである可能性がある」と言うための反対投票。
ルークハッチソン

私の場合、私はMaven / Tychoを使用してEclipseプラグインをビルドしており、上記のデフォルトは最終的にMANIFEST.MFファイルで指定された実行環境から派生したものです。実行環境をJavaSE-1.8に変更すると、問題が修正されました。
mat101

3

この行をpom.xmlに追加し、JREシステムライブラリを右クリックして、[プロパティ]->正しい実行環境をJava 1.8または設定するバージョンに設定します。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.2</version> <!-- or whatever current version -->
    <configuration>
      <source>1.8</source>
      <target>1.8</target>
    </configuration>
  </plugin> 

あなたの答えには<build> <plugins> ...ここの答え... </ plugins> </ build>が欠けているので、人々にとってより明確な答えになります。
カイルブリデンスティン

1

私はこの問題を抱えていました。私の場合、上記のJorge Camposの<properties>タグとネストされたタグが間違った場所にありました。それらをpom.xmlファイルの<hostversion>タグと<dependencies>タグの間に置いた場合、この動作は停止しました。

これらのファイルの検証がオンになっている場合、Eclipseでそれを取得できます。


1

チームメイトマシンの1つで同様の問題が発生します。彼は古いバージョンのEclipseを使用していましたが、彼はKepplerを使用していたと思います。更新後のプロジェクトでJREバージョンを1.5に変更します。

Eclipseを最新バージョンに更新するだけでこの問題は解決します。


うん、違う。私はNeonを実行していますが、ワークスペース設定はすべて1.8ですが、Mavenプロジェクトをインポート(または更新)すると、EclipseはJ2SE-1.5の使用を要求します。
アンタレス42 2017

@ Antares42コマンドラインから問題なくビルドできますか?どのm2eバージョンを使用していますか?
user902383 2017

1
コマンドラインを使用してビルドすることができます(または「Run as-> Maven build ...」)。問題はありません。しかし、「Maven-> Update project」を実行するとすぐに、前述のようにJREライブラリーが取得され、Eclipseはプロジェクトのビルドに失敗します。Mavenを使用してビルドすることもできます。maven.compiler.source上記の回答で述べたようにプロパティを追加すると、すべてが正常に動作します。私のm2eバージョンは1.7.1-20161104-1805です。
アンタレス42

1

私の場合(古いJBoss Developer Studio)、問題はJRE環境に1.8(1.7のみ)が含まれていないことでした。切り替えたときmaven-compiler-pluginバージョンを1.7 maven updateプロジェクトを実行すると、Eclipse JREシステムライブラリが1.7に更新されました。 ここに画像の説明を入力してください

したがって、解決策は、1.8以降の組み込みJRE環境を含む新しいIDEバージョンを入手するか、手動でインストールすることです(https://stackoverflow.com/a/35204314を参照)。


0

私はその件名をJava 11で更新することを許可します。

私のコンピューターにOpenJDK11をインストールし、それをアプリで使用したいと思いました。

Mavenでプロジェクトを更新すると、Eclipseは常にJREをJavaSE-1.5に変更するため、問題が発生しました。

私はあなたが言ったようにすべてを設定しましたが、私は常にJavaビルドパス「java-11-openjdk.x86_64」を私の代替のJREの1つとして直接選択していました。図に示すように、「実行環境」でJavaSE-10を選択して問題を修正しました(ただし、ダブルクリックして、互換性のあるJREとしてOpenJDK11バージョンを選択する必要があります)。 実行環境設定

そのおかげでプロジェクトはJava 11を使用します(図)。ただし、pom.xmlでjava-versionに10を記述し、プロジェクトファセットでjava 10を設定する必要もあります。


0

日食アップデート「JAVA 12」を市場からインストールする際の問題を解決しました。私の日食をケプラーからルナに渡します。

その後、1.8を標準JDKとして設定し、「maven update」の問題を修正することができました。


-3

私はEclipseをケプラーからネオンに変更してから、Maven-> Update Projectでプロジェクトを更新しました。

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