Netbeansでプログラムをビルドして実行すると、問題なく動作します。しかし、「mvn compile」を試行すると、同じpom.xmlファイルで次のエラーが発生します。
[ERROR] Failed to execute goal org.Apache.maven.plugins:maven-compiler-plugin:2.0.2:compile (default-compile) on project hadoop-test: Compilation failure
[ERROR] /home/metin/NetBeansProjects/hadoop-test/src/main/Java/com/citusdata/hadoop/HadoopTest.Java:[53,8] error: generics are not supported in -source 1.3
私のJavaバージョンは1.3ではありません。ここでは "mvn -version"の結果
Apache Maven 3.0.4
Maven home: /usr/share/maven
Java version: 1.7.0_03, vendor: Oracle Corporation
Java home: /usr/lib/jvm/Java-7-openjdk-AMD64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.2.0-27-generic", Arch: "AMD64", family: "unix"
これは53行目です:
Token<BlockTokenIdentifier> token = locatedBlock.getBlockToken();
問題は、Maven2のmaven-compiler-plugin
がデフォルトで-source 1.3
およびtarget 1.3
を使用することです。
これをpomに追加することで修正できます。
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<compilerVersion>1.5</compilerVersion>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
これを最上位の親pomのpluginManagement
セクションに配置して、派生pomがこれを気にする必要がないようにするのが現実的です。
Pom.xmlにいくつかの情報を追加する必要があります。そんな感じ:
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
あなたのログには、次の行が表示されます:
generics are not supported in -source 1.3
Maven-compilerプラグインのソースとターゲットの構成を確認し、1.5に更新します。
Mavenコンパイラプラグインのバージョンは1.3のようです。
このリンクを見て、コンパイラーを強制的にJDK 1.7で実行する http://maven.Apache.org/plugins/maven-compiler-plugin/examples/compile-using-different-jdk.html
EclipseからMaven Runを実行してから、コマンドプロンプトからmvn testを実行してください。私の場合、この手順ですべての問題が解決しました。
あなたのmaven Javaホームポイントはjdkではなくjreを指しているようです
Java home: /usr/lib/jvm/Java-7-openjdk-AMD64/jre
Jdkに変更する必要があります。
Java -version
を試して、何があるか確認してください
Javaバージョンを変更するには、/usr/sbin/alternatives --config Java
を使用します。
これは、Eclipse Indigoで同じエラーを修正するための少し異なる方法です。
入る:
- groupId: org.Apache.maven.plugins
- artifactId: maven-compiler-plugin
- version: 2.3.2
これにより、pom.xmlに新しいセクションが挿入され、編集用のウィンドウが開きます。
次に、上記のソースとターゲットのxml要素を追加して、正しいJREを選択できます。
セクションは私のプロジェクトでは次のようになります。
<build>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
他のいくつかの投稿にはない「ビルド」と「プラグイン」の追加タグに注意してください。
ファイルを保存すると、Eclipseはpomがプロジェクトと同期していないことを通知します。
次に、プロジェクトを右クリックします... Maven..updateプロジェクトを選択します
私にとって重要な洞察は、MavenがEclipseでビルドパスを自動的に再設定することでした。プロジェクト...ビルドパス..ビルドパス...ライブラリで確認できます。
つまり、Mavenプロジェクトを使用している場合、本質的には、Eclipseでビルドパスを直接設定する必要はありません。
HTH