Wenn ich mein Programm in Netbeans erstelle und ausführen, funktioniert es problemlos. Aber mit der gleichen pom.xml-Datei, wenn ich "mvn compile" versuche, erhalte ich diesen Fehler:
[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 -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"
und das ist die Linie 53:
Token<BlockTokenIdentifier> token = locatedBlock.getBlockToken();
Das Problem ist, dass maven-compiler-plugin
in Maven2 standardmäßig -source 1.3
und target 1.3
verwendet.
Sie können das Problem beheben, indem Sie dies zu Ihrem Pom hinzufügen:
<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, dies in den pluginManagement
-Abschnitt Ihres obersten übergeordneten Poms zu setzen, damit sich Ihre abgeleiteten Poms nicht darum kümmern müssen.
Sie müssen einige Informationen in Ihre pom.xml einfügen. Sowas in der Art:
<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>
In Ihrem Protokoll sehe ich diese Zeile:
generics are not supported in -source 1.3
Überprüfen Sie die Quell- und Zielkonfiguration des Maven-Compiler-Plug-Ins und aktualisieren Sie es auf 1.5.
Es scheint, dass Ihre Version des Maven-Compiler-Plugins 1.3 ist.
Schauen Sie sich diesen Link an, um den Compiler zu zwingen, mit JDK 1.7, http://maven.Apache.org/plugins/maven-compiler-plugin/examples/compile-using-different-jdk.html
Bitte führen Sie Maven Run aus Eclipse aus und führen Sie dann mvn test über die Eingabeaufforderung aus. In meinem Fall wurden alle Probleme mit diesem Schritt gelöst.
Es scheint, dass Ihr maven Java-Home-Point auf ein jre und kein jdk verweist
Java home: /usr/lib/jvm/Java-7-openjdk-AMD64/jre
Sie müssen es in ein jdk ändern.
Versuchen Sie Java -version
und sehen Sie, was da ist
verwenden Sie /usr/sbin/alternatives --config Java
, um Ihre Java-Version zu ändern.
Hier ist ein etwas anderer Weg, um den gleichen Fehler in Eclipse Indigo zu beheben.
Eingeben:
- groupId: org.Apache.maven.plugins
- artifactId: maven-compiler-plugin
- version: 2.3.2
Dies fügt einen neuen Abschnitt in Ihre pom.xml ein und öffnet 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 in meinem Projekt folgendermaßen aus:
<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 "plugins", die in einigen anderen Beiträgen fehlen.
Nachdem Sie die Datei gespeichert haben, werden Sie von Eclipse darüber informiert, dass Ihr Pom nicht mit Ihrem Projekt synchron ist.
Sie können dann mit der rechten Maustaste auf das Projekt klicken ... Maven..update-Projekt auswählen
Eine der wichtigsten Erkenntnisse für mich war, dass Maven den Build-Pfad in Eclipse automatisch neu setzt. Was Sie mit Project überprüfen können ... build path..configure build path ... Bibliotheken.
Im Wesentlichen bedeutet dies, dass Sie sich nicht mit der direkten Konfiguration des Erstellungspfads in Eclipse beschäftigen müssen, wenn Sie ein Maven-Projekt verwenden.
HTH