IntelliJ、JDK1.8、maven 3.2.5でmavenを使用しています。コンパイルエラーが発生しました:-source 7以上を使用して、ダイヤモンドオペラを有効にします。詳細は次のとおりです。
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] TrainingConstructor.Java:[31,55] diamond operator is not supported in -source 1.5 (use -source 7 or higher to enable diamond operator)
[ERROR] DTM.Java:[79,21] try-with-resources is not supported in -source 1.5 (use -source 7 or higher to enable try-with-resources)
[ERROR] ticons.Java:[53,44] diamond operator is not supported in -source 1.5 (use -source 7 or higher to enable diamond operator)
助言がありますか?この-sourceレベルを設定する他の構成はありますか? Java 1.8を使用していないようです。
maven-compiler-plugin
がどのように構成されているかを確認します。Javaバージョン7以降を使用する必要があります。
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
より完全な回答については、 下の1つ を参照してください。
<properties>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
...
問題が発生するのは
[...]現在、デフォルトのソース設定は1.5で、デフォルトのターゲット設定は1.5です(Mavenを実行するJDKに依存しない。これらのデフォルトを変更する場合は、Javaコンパイラの-sourceおよび-targetの設定の説明に従ってソースとターゲットを設定する必要があります。
最新のMavenバージョンでは:
また、Mavenを実行するJDKに関係なく、現在のデフォルトのソース設定は1.6で、デフォルトのターゲット設定は1.6です。 「Javaの-sourceおよび-targetの設定」の説明に従って、sourceおよびtargetを設定してこれらのデフォルトを変更することを強くお勧めします。コンパイラ。
そのため、JDKを変更してもソースレベルには影響しません。そのため、使用するソースレベルをMavenに伝える方法がいくつかあります。
この例のようにターゲット1.7を設定する場合、mvnコマンドが実際にjdk7(またはそれ以上)で起動されることを確認してください
通常、IDEはプロジェクト構成のソースとしてmaven pom.xmlファイルを使用します。 IDEのコンパイラ設定を変更しても、必ずしもMavenビルドに影響するわけではありません。そのため、プロジェクトを常にMavenで管理可能(および他のIDEと相互運用可能)に保つ最良の方法は、pom.xmlファイルを編集し、IDEにMavenと同期するように指示することです。
設定を変更する必要があります。
<project>
[...]
<build>
[...]
<plugins>
<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>
</plugins>
[...]
</build>
[...]
</project>
JavaCのsource/taget
オプションとJDK 1.8/1.7などの使用法の違いを学ぶ必要があります。
それとは別に、use maven-compiler-pluginをアップグレードする必要があります。
すでに@Sergey Paukおよび@khmarbaiseソリューションを試した場合は、設定->ビルド、実行、展開->コンパイラ-> Javaコンパイラも確認してください。特定のモジュールのターゲットバイトコードバージョンがあります。