GitリポジトリからEclipseにフォークおよびクローンされたMavenプロジェクトがあります。 Java 8上に構築されています。最初に行うことは、
mvn clean install
しかし、次のエラーメッセージが表示されます。
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ Maven ---
[INFO] Deleting /Users/vshukla/git/Prism/target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ Maven ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /Users/vshukla/git/Prism/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ Maven ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[INFO] Compiling 66 source files to /Users/vshukla/git/Prism/target/classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /Users/vshukla/git/Prism/src/main/Java/PrenPost/scanUtility.Java:[54,52] diamond operator is not supported in -source 1.5
(use -source 7 or higher to enable diamond operator)
[ERROR] /Users/vshukla/git/Prism/src/main/Java/main/AppUtility.Java:[87,86] diamond operator is not supported in -source 1.5
(use -source 7 or higher to enable diamond operator)
[ERROR] /Users/vshukla/git/Prism/src/main/Java/PrenPost/ComparisionUtility.Java:[58,52] diamond operator is not supported in -source 1.5
(use -source 7 or higher to enable diamond operator)
[INFO] 3 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.266 s
[INFO] Finished at: 2017-03-01T12:11:27+05:30
[INFO] Final Memory: 13M/309M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.Apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project Maven: Compilation failure: Compilation failure:
[ERROR] /Users/vshukla/git/Prism/src/main/Java/PrenPost/scanUtility.Java:[54,52] diamond operator is not supported in -source 1.5
[ERROR] (use -source 7 or higher to enable diamond operator)
[ERROR] /Users/vshukla/git/Prism/src/main/Java/main/AppUtility.Java:[87,86] diamond operator is not supported in -source 1.5
[ERROR] (use -source 7 or higher to enable diamond operator)
[ERROR] /Users/vshukla/git/Prism/src/main/Java/PrenPost/ComparisionUtility.Java:[58,52] diamond operator is not supported in -source 1.5
[ERROR] (use -source 7 or higher to enable diamond operator)
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.Apache.org/confluence/display/MAVEN/MojoFailureException
ただし、以下は、JRE-8がセットアップされているプロジェクトのビルドパスの詳細です。
コンパイルのセットアップ:
何回プロジェクトをビルドしても、同じエラーが発生します。プロジェクトをクリーンアップし、Eclipseから更新した後も役に立ちません。ガイドしてください。
UPDATE:
プロパティを追加してmavenコンパイラプラグインを設定した後
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
、
以下のエラーが発生しています:
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ Maven ---
[INFO] Deleting /Users/vshukla/git/Prism/target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ Maven ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /Users/vshukla/git/Prism/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ Maven ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[INFO] Compiling 66 source files to /Users/vshukla/git/Prism/target/classes
[INFO] -------------------------------------------------------------
[WARNING] COMPILATION WARNING :
[INFO] -------------------------------------------------------------
[WARNING] /Users/vshukla/git/Prism/src/main/Java/main/MainUITabbed.Java: /Users/vshukla/git/Prism/src/main/Java/main/MainUITabbed.Java uses or overrides a deprecated API.
[WARNING] /Users/vshukla/git/Prism/src/main/Java/main/MainUITabbed.Java: Recompile with -Xlint:deprecation for details.
[WARNING] /Users/vshukla/git/Prism/src/main/Java/main/MainUITabbed.Java: Some input files use unchecked or unsafe operations.
[WARNING] /Users/vshukla/git/Prism/src/main/Java/main/MainUITabbed.Java: Recompile with -Xlint:unchecked for details.
[INFO] 4 warnings
[INFO] -------------------------------------------------------------
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /Users/vshukla/git/Prism/src/main/Java/main/MainUITabbed.Java:[26,22] package com.Apple.eawt does not exist
[ERROR] /Users/vshukla/git/Prism/src/main/Java/main/MainUITabbed.Java:[93,41] cannot find symbol
symbol: class Application
[ERROR] /Users/vshukla/git/Prism/src/main/Java/main/MainUITabbed.Java:[93,67] cannot find symbol
symbol: variable Application
[INFO] 3 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.591 s
[INFO] Finished at: 2017-03-01T13:09:47+05:30
[INFO] Final Memory: 21M/347M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.Apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project Maven: Compilation failure: Compilation failure:
[ERROR] /Users/vshukla/git/Prism/src/main/Java/main/MainUITabbed.Java:[26,22] package com.Apple.eawt does not exist
[ERROR] /Users/vshukla/git/Prism/src/main/Java/main/MainUITabbed.Java:[93,41] cannot find symbol
[ERROR] symbol: class Application
[ERROR] /Users/vshukla/git/Prism/src/main/Java/main/MainUITabbed.Java:[93,67] cannot find symbol
[ERROR] symbol: variable Application
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.Apache.org/confluence/display/MAVEN/MojoFailureException
そして、MainUITabbedクラスからのコンパイルエラーを与えるコードスニペットを次に示します。
import com.Apple.eawt.Application;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Application application = Application.getApplication(); // line 93
ImageIcon imgicon = new ImageIcon(getClass().getResource(
"ICON.jpg"));
Image img = imgicon.getImage();
application.setDockIconImage(img);
MainUITabbed frame = new MainUITabbed();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
これをPOMに追加すると修正されました。必要に応じてバージョンを調整してください
...
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
IDEはここでは関係ないと思います。結局、Mavenを実行しているのに、Mavenにはダイヤモンド演算子をコンパイルできるソースがありません。そのため、maven-compiler-plugin自体を構成する必要があると思います。
これについて読むことができます こちら 。ただし、一般的には次のプロパティを追加してください。
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
mavenのみでコンパイルされるかどうかを確認します。
私は同じ問題を抱えていて、これを変更しました
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
ここで1.7は私のJDKバージョンです。それは解決されました。
私の場合、これはOpenJDK 9(私は調査していません)との非互換性が原因です。
JDK 9が必要ない場合、一時的な回避策はマシンからパージすることです。
Sudo apt-get remove --purge openjdk-9-jdk openjdk-9-jre
Sudo apt-get remove --purge openjdk-9-jdk-headless openjdk-9-jre-headless
バディ、
これがすべて最新である場合でも、この問題が発生しています。
Eclipseから実行する代わりに、このコマンドをターミナルから直接実行してみてください。$ mvn clean install
そして次のことを確認してください:
Javaバージョンの不一致が原因で来ていたので、それを修正し、warファイルをビルドできます。
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
JDK 9および10ソリューション
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler.version}</version>
<configuration>
<source>${Java.version}</source>
<target>${Java.version}</target>
<debug>true</debug>
</configuration>
<dependencies>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>6.2</version>
</dependency>
</dependencies>
</plugin>
そして、MavenがJDK 10または9を指していることを確認してください。mvn -v
Apache Maven 3.5.3 (3383c37e1f9e9b3bc3df5050c29c8aff9f295297; 2018-02-24T14:49:05-05:00)
Maven home: C:\devplay\Apache-maven-3.5.3\bin\..
Java version: 10.0.1, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk-10.0.1
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", Arch: "AMD64", family: "windows"
Pom.xmlファイルでこれを行うと、プロジェクトを更新した後、問題はなくなります。
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.4</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin></plugin>
の下のpom.xmlを更新します。
プロジェクトを更新します。
次に、Mavenをクリーニングして、Mavenをインストールします。
以下のpom.xml構成は、ビルドを成功させ、プロジェクトのビルドパスJREシステムライブラリがJava8を指すようにします。
org.Apache.maven.pluginsmaven-compiler-plugin3.7.0 1.81.8
POMが保存されているファイルの場所に移動し、cmdを開きます。次に、「mvn --v」と入力して、提供されているMavenバージョンとJavaランタイムを確認します。ランタイム属性を確認し、「C:\ Program Files\Java\jre1.8.0_191」またはJREに近い場合は、環境変数に移動して、「C:」という値を持つ「Java_HOME」という新しい「システム変数」を追加します。\Program Files\Java\jdk1.8.0_191 "。
Cmdを再度開き、プロジェクトを「クリーンインストール」します。
Javaホームパスが正しいことを確認してください。私の場合、Javaホームパスはpomファイルで間違っています。
<properties>
<Java.home>/usr/Java/jdk1.8.0_45/bin/javac</Java.home>
</properties>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<verbose>true</verbose>
<fork>true</fork>
<executable>${Java.home}</executable>
<compilerVersion>1.8</compilerVersion>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
次のようにコードをpom.xmlに追加する必要があります。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>