Lorsque je construis et exécute mon programme dans Netbeans, cela fonctionne sans problème. Mais avec le même fichier pom.xml lorsque j'essaie "Compiler le MVN", j'obtiens cette erreur:
[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
Ma version Java n'est pas la 1.3, voici le résultat de "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"
et c'est la ligne 53:
Token<BlockTokenIdentifier> token = locatedBlock.getBlockToken();
Le problème est que maven-compiler-plugin
dans Maven2 utilise par défaut -source 1.3
et target 1.3
Vous pouvez le réparer en ajoutant ceci à votre 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>
Il est pratique de mettre cela dans la section pluginManagement
de votre pom parent le plus élevé afin que vos poms dérivés n'aient pas à s'en soucier.
Vous devez ajouter des informations dans votre pom.xml. Quelque chose comme ca:
<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>
Dans votre journal, je vois cette ligne:
generics are not supported in -source 1.3
Vérifiez la configuration source et cible du plug-in maven-compiler et mettez-la à jour vers la version 1.5.
Il semble que la version de votre plugin Maven Compiler soit la 1.3.
Consultez ce lien pour forcer le compilateur à fonctionner avec JDK 1.7, http://maven.Apache.org/plugins/maven-compiler-plugin/examples/compile-using-different-jdk.html
Veuillez exécuter Maven Exécuter à partir d’Eclipse, puis exécutez mvn test à partir de la commande Invite. Dans mon cas, tous les problèmes résolus avec cette étape.
Il semble que votre maven Java home pointe vers un jre not jdk
Java home: /usr/lib/jvm/Java-7-openjdk-AMD64/jre
Vous devez le changer en un jdk.
Essayez Java -version
et voyez ce qu'il y a
utilisez /usr/sbin/alternatives --config Java
pour changer votre version de Java.
Voici une manière légèrement différente de corriger la même erreur dans Eclipse Indigo.
Entrer:
- groupId: org.Apache.maven.plugins
- artifactId: maven-compiler-plugin
- version: 2.3.2
Cela va insérer une nouvelle section dans votre pom.xml et ouvrir une fenêtre pour l'édition.
Ensuite, vous pouvez ajouter les éléments XML source et cible comme décrit ci-dessus pour sélectionner le bon JRE.
La section ressemble à ceci dans mon projet:
<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>
Notez les balises supplémentaires pour "construire" et "plugins" absents dans certains des autres postes.
Une fois le fichier sauvegardé, Eclipse vous informera que votre pom n'est pas synchronisé avec votre projet.
Vous pouvez ensuite faire un clic droit sur le projet ... choisissez le projet Maven..update
Un élément clé pour moi a été que Maven redéfinira automatiquement le chemin de génération dans Eclipse. Que vous pouvez vérifier par Projet ... chemin de construction..configurez le chemin de construction ... Bibliothèques.
Cela signifie donc que vous ne devriez pas avoir à vous préoccuper de la configuration directe du chemin de génération dans Eclipse si vous utilisez un projet Maven.
HTH