2012-11-08 9 views
11

Wenn ich mein Programm in Netbeans erstellen und ausführen, funktioniert es ohne ein Problem. Aber mit dem gleichen pom.xml Datei, wenn ich versuche, "mvn kompiliert" Ich bekomme diese Fehlermeldung:Maven Compile Error

[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 

Meine Java-Version ist nicht 1.3, hier das Ergebnis von "mvn -Ausführung"

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" 

und Dies ist die Linie 53:

Token<BlockTokenIdentifier> token = locatedBlock.getBlockToken(); 
+0

Spezifizieren Sie ein bestimmtes Compiler-Plugin? Gibt es noch etwas in deinem Pom? – bluesman

Antwort

21

Das Problem zu laufen ist, dass maven-compiler-plugin in Maven2 verwendet standardmäßig -source 1.3 und target 1.3

Sie es beheben kann durch Zugabe dieser zu Ihr 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> 

Es ist praktisch das in pluginManagement Abschnitt in Ihrer obersten Mutter pom zu setzen, so dass Ihre abgeleitet poms müssen nicht interessieren Dies.

+0

Ja, das hat mein Problem gelöst, aber warum funktioniert Netbeans mvn? – metdos

+0

Nicht sicher, ich bin kein NetBeans-Benutzer, aber vielleicht fügt NB einige Eigenschaften (wie 'maven.compiler.source',' maven.compiler.target') hinzu oder erzwingt eine neuere Version von maven-compiler-plugin, die bereits die Wert von 1,5 als Standard - http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html#source –

+1

Meine Maven-Version ist 3.0.4. Wie wird am Ende ein altes Maven-Compiler-Plugin verwendet? – metdos

5

Sie müssen einige Informationen in Ihrer pom.xml hinzufügen. So etwas wie das:

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

In Ihrem Log sehe ich diese Zeile:

generics are not supported in -source 1.3 

Überprüfen Sie die Quell- und Ziel-Konfiguration von Maven-Compiler-Plug-in, und es zu 1.5 aktualisieren.

0

Es scheint, Ihr Maven Java Hause Punkt zu einem jre jdk nicht

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

Sie haben, es zu ändern, um eine jdk.

Versuchen java -version und sehen, was gibt es

Verwendung /usr/sbin/alternatives --config java Ihre Java-Version zu ändern.

0

Hier ist eine etwas andere Möglichkeit, den gleichen Fehler in Eclipse Indigo zu beheben.

  • Öffnen Sie Ihr (Maven) Projekt in Eclipse.
  • Rechtsklick auf pom.xml
  • wählen ... Maven ... In Plugin
  • eingeben:

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

Dies wird einen neuen Abschnitt in Ihrem pom.xml einfügen und Öffnen Sie ein Fenster zum Bearbeiten.

Dann können Sie die Quell- und Ziel-XML-Elemente wie oben beschrieben hinzufügen, um die richtige JRE auszuwählen.

Der Abschnitt sieht wie folgt in meinem Projekt:

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

Beachten Sie die zusätzlichen Tags für „Build“ und „Plug-ins“ in einigen der anderen Beiträgen fehlen.

Sobald Sie die Datei gespeichert haben, wird Eclipse Sie darüber informieren, dass Ihr Pom nicht mit Ihrem Projekt übereinstimmt.

Sie können dann direkt das Projekt klicken ... wählen Maven..update Projekt

Eine wichtige Erkenntnis für mich war, dass Maven automatisch den Build-Pfad in Eclipse neu eingestellt. Was Sie mit Project überprüfen können ... build path..config build path ... Bibliotheken.

Im Wesentlichen bedeutet dies, dass Sie sich nicht damit befassen sollten, den Build-Pfad in Eclipse direkt zu konfigurieren, wenn Sie ein Maven-Projekt verwenden.

HTH