web-dev-qa-db-fra.com

Maven: Erreur fatale lors de la compilation: Version cible non valide: 1.8

Nous venons de mettre à jour le projet de jdk 1.6 à jdk 1.8. En construisant le projet dans ma machine, je reçois une erreur suivante.

[ERREUR] Échec d'exécution du but org.Apache.maven.plugins: maven-compiler-plugin: 3.3: compiler (compilation par défaut) sur une exception de projet: erreur irrécupérable lors de la compilation: non valide version cible: 1.8 -> [Aide 1]

Voici le plugin maven compiler qui a été utilisé

 <plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.3</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
        </configuration>
  </plugin>

J'ai consulté les nombreux articles et la plupart d'entre eux étaient liés au fait de ne pas avoir la version correcte configurée pour Java_home. J'ai vérifié tous ces aspects et je n'ai trouvé aucun d'entre eux alarmant.

Version Java -

 qadeersmsiphone:main pdubey$ Java -version
 Java version "1.8.0_51"
 Java(TM) SE Runtime Environment (build 1.8.0_51-b16)
 Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode)

Version Maven -

qadeersmsiphone:main pdubey$ mvn -version
Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17 08:22:22-0700)
Maven home: /usr/share/maven
Java version: 1.8.0_51, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.8.5", Arch: "x86_64", family: "mac"

et j'ai vérifié que lors de la construction du projet Maven utilise jdk 1.8

qadeersmsiphone:main pdubey$ mvn install -debug
Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17 08:22:22-0700)
Maven home: /usr/share/maven
Java version: 1.8.0_51, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.8.5", Arch: "x86_64", family: "mac"
[INFO] Error stacktraces are turned on.
[DEBUG] Reading global settings from /usr/share/maven/conf/settings.xml
[DEBUG] Reading user settings from /Users/pdubey/.m2/settings.xml
[DEBUG] Using local repository at /Users/pdubey/.m2/repository
[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10.0 for  /Users/pdubey/.m2/repository
[INFO] Scanning for projects...

UPDATE: Je pourrais le faire fonctionner en supprimant le maven-compiler-plugin dans le fichier pom (idéalement, je ne veux pas faire cela). Et j'ai également observé que même si je supprimer ce plugin, maven télécharge par défaut la version 3.3 de compilateur plugin dans mon repo local. Je ne suis pas sûr de ce qui ne va pas dans ceci plugin bien que la source et la cible semblent être correctes.

10
Pankaj

Vérifiez la version de Java et Javac - Ma version de Java était 1.8.0_51

$ Java -version
Java version "1.8.0_51"

Mais la version de javac pointait sur le vieux jdk 1.7.0_67

$ javac -version
javac 1.7.0_67

Il y a deux ou trois choses que nous devrions essayer -

  1. Assurez-vous que le lien symbolique pointe pour corriger jdk. Sinon, supprimez le lien existant et créez-en un nouveau pour votre jdk

    cd /System/Library/Frameworks/JavaVM.framework/Versions/
    rm CurrentJDK
    ln -s /Library/Java/JavaVirtualMachines/<jdk version>.jdk/Contents/ CurrentJDK
    
  2. Dans/Library/Java/Extension, j'avais un fichier tools.jar. Je crois que c'était du vieux jdk.

    cd /Library/Java/Extensions
    -rw-r--r--  1 root  admin  15286304 Jan 14  2015 tools.jar
    

    Enlève ça

    Sudo rm -rf /Library/Java/Extensions
    

le point 2 a fait l'affaire pour moi :)

13
Pankaj

Parfois, ce problème est lié à un Java_HOME utilisé par maven. 

  • Dans mon cas particulier, j'ai essayé de démarrer une cible install et j'avais exactement le message subj. 
  • Ensuite, j'ai juste essayé une commande mvn -version et j'ai réalisé qu'elle utilisait jdk7
  • Ensuite, je lance dans une console set Java_HOME=C:\Java\jdk8 (mon chemin jdk, donc le vôtre pourrait être différent)
  • Puis tapé mvn clean install test et cela a fonctionné juste bien enfin

Bonne chance!

5
Lord Nighton

Même problème ici, mais j’utilisais des configurations d’exécution dans Eclipse lorsque maven continuait à lancer cette erreur. Corrigé en réglant la bonne version du JDK ici:

Run Configuration image

1
Manu Pillai

J'ai eu le même problème: 

> Java -version
Java version "1.8.0_111"

>javac -version
javac 1.7.0.6

J'ai vérifié le chemin d'accès dans les variables système et le jdk n'a pas été mis à jour vers jdk 8 .

0
Adelina

En cent os, nous pouvons utiliser des alternatives pour changer de version.

alternatives --config javac
alternatives --config Java

Mais MAVEN utilise Java_HOME. 

Et ce Java_HOME peut être possible à un lien. 

Soit nous devons pointer manuellement Java_HOME vers le nouveau dossier jdk, OR supprimer/supprimer manuellement le lien et créer à nouveau un même lien à partir des réponses précédentes.

Des alternatives, nous pouvons obtenir le chemin de jdk

0
Kanagavelu Sugumar