2012-11-08 15 views
11

Netbeansでプログラムをビルドして実行すると問題なく動作します。しかし、同じpom.xmlファイルで、私はこのエラーを取得する "MVNをコンパイル" しようとすると:Mavenコンパイルエラー

[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のバージョンは、ここでは、 "MVN -version" の結果1.3ではありません

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(); 
+0

特定のコンパイラプラグインを指定していますか?あなたのポンに何か他のものはありますか? – bluesman

答えて

21

、JDK 1.7で実行するようにコンパイラに強制するには、このリンクを見てくださいhttp://maven.apache.org/plugins/maven-compiler-plugin/examples/compile-using-different-jdk.htmlあなたのポンポン:それはあなたの派生POMSを気にする必要がないように、あなたの最上位の親ポンポンにpluginManagementセクションにこれを置くために実用的だ

<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> 

この。あなたのログで

+0

はい、これは私の問題を解決しましたが、なぜNetbeans mvnが機能しますか? – metdos

+0

NetBeansのユーザーではありませんが、NBはいくつかのプロパティ( 'maven.compiler.source'、' maven.compiler.target'など)を追加するか、既に新しいバージョンのmaven-compiler-pluginを強制していますデフォルト値は「1.5」です。http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html#source –

+1

私のバージョンは3.0.4です。古いMavenコンパイラプラグインを使ってどうやって終わるのですか? – metdos

5

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> 
0

mavenコンパイラプラグインのバージョンは1.3です。

問題は、デフォルトではMaven2を中maven-compiler-plugin-source 1.3target 1.3

を使用していますあなたがにこれを追加することによって、それを修正することができるということです

1

、私はこの行を参照してください。

generics are not supported in -source 1.3 

はのmaven-コンパイラプラグインのソースとターゲットの設定を確認し、1.5に更新します。

0

JREへのあなたのMavenのJavaホーム・ポイントは、あなたがJDKにそれを変更する必要が

Java home: /usr/lib/jvm/java-7-openjdk-amd64/jre 

をjdkないようです。

java -versionを試してみて、あなたのJavaのバージョンを変更するには

使用/usr/sbin/alternatives --config javaがあるかを参照してください。

0

Eclipse Indigoで同じエラーを修正する方法は少し異なります。

  • Eclipseで(maven)プロジェクトを開きます。
  • のpom.xmlに選択... Mavenを...プラグイン
  • を入力し、[追加]をクリックします:

    - groupId: org.apache.maven.plugins 
        - artifactId: maven-compiler-plugin 
        - version: 2.3.2 
    

をこれはあなたのpom.xmlでの新しいセクションを挿入し、編集のためのウィンドウを開きます。

次に、正しいJREを選択するために、上記のようにソース要素とターゲットxml要素を追加できます。

<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> 

注意「ビルド」のための余分なタグや他の記事のいくつかには存在しない「プラグイン」:

セクションでは、私のプロジェクトでは、このようになります。

ファイルを保存すると、あなたのPOMがプロジェクトと同期していないことをEclipseから通知されます。

あなたは右Maven..updateプロジェクト

私のための重要な洞察がMavenのは、自動的にEclipseのビルド・パスを再設定することだった選択...プロジェクトをクリックすることができます。あなたは、Project ... build path..configure build path ...ライブラリによって検証できます。

したがって、これは、Mavenプロジェクトを使用している場合は、Eclipseで直接ビルドパスを設定することを邪魔する必要はないということです。

HTH