web-dev-qa-db-fra.com

Impossible pour Maven de reconnaître Java 1.8

Je n'arrive pas à obtenir que Maven utilise Java 1.8. Utiliser 1.8 comme cible génère l'erreur suivante:

[ERROR] Failed to execute goal org.Apache.maven.plugins:maven-compiler-plugin:3.1:compile
(default-compile) on project csaro: Fatal error compiling: invalid target
release: 1.8 -> [Help 1]

La cause de l'erreur est assez évidente: Maven n'utilise pas la bonne version de Java:

$ mvn -version
Apache Maven 3.2.2 (45f7c06d68e745d05611f7fd14efb6594181933e; 2014-06-17T07:51:42-06:00)
Maven home: /usr/local/Cellar/maven/3.2.2/libexec
Java version: 1.7.0_51, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.9.2", Arch: "x86_64", family: "mac"

Mais la version installée de Java devrait être 1.8:

$ Java -version
Java version "1.8.0_20-ea"
Java(TM) SE Runtime Environment (build 1.8.0_20-ea-b22)
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b21, mixed mode)

Et Java_HOME est défini:

$ echo $Java_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home

J'ai aussi essayé le commande ici (qui crée mavenrc). J'ai essayé de redémarrer l'ordinateur plusieurs fois et j'ai vérifié que la variable env est correctement définie (elle est définie dans .bash_profile).

Maven a été installé avec Homebrew.

Java 1.8 fonctionne bien dans Eclipse (qui utilise m2e). Je n'arrive pas à faire travailler Maven sur la ligne de commande.

70
Kat

Il se trouve que j'avais un fichier oublié ~/.mavenrc qui avait défini la valeur de Java_HOME.

Pour les lecteurs futurs, recherchez les emplacements susceptibles de remplacer Java_HOME (dans l'ordre croissant de priorité) dans les emplacements suivants:

  • ~/.bash_profile
  • ~/.bash_login
  • ~/.bashrc
  • ~/.profile
  • /etc/mavenrc
  • ~/.mavenrc
46
Kat

Pour moi, le problème était que lorsque j'ai installé à partir de jdk-8u25-macosx-x64.dmg, l'installation n'a pas mis à jour le lien de répertoire /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK vers le nouveau JDK 1.8. Ce n'était peut-être pas le problème de la question d'origine, mais c'était la solution pour moi lorsque j'ai rencontré le même message d'erreur.

Je ne sais pas pourquoi le programme d'installation ne le lie pas et pour compliquer encore les choses, le chemin est différent selon que vous l'avez installé à partir d'Oracle ou d'Apple. Voir Mac OS X 10.6.7 Java Chemin d'accès du JDK actuel prêtant à confusion

J'ai fait ce qui suit pour réparer mon environnement

cd /System/Library/Frameworks/JavaVM.framework/Versions
Sudo rm CurrentJDK
Sudo ln -s /Library/Java/JavaVirtualMachines/<installed_jdk_version>.jdk/Contents CurrentJDK
55
Kirby

La solution qui a fonctionné pour moi:

Dans Eclipse, la configuration de mon exécution Maven était incorrecte. Aller à

Exécuter les configurations -> JRE [Tab]

et définissez le runtime sur Java 8.

27
Bevor

J'ai rencontré le même problème sur mon système CentOS 6.5.

Java -version a renvoyé une version Java 8, mais javac -version a renvoyé une version Java 7.

Je devais exécuter les commandes suivantes pour que toutes les sortes de liens symboliques liés à Java pointent vers mon installation de JDK 8:

Sudo alternatives --config Java
Sudo alternatives --config javac
Sudo alternatives --config jre_openjdk
Sudo alternatives --config Java_sdk_openjdk
25
Abdull

Votre Java_HOME est remplacé ailleurs. Essayez de faire écho dans mvn juste avant l'invocation de Java.

13
Jigar Joshi

Notez que vous pouvez également obtenir l'erreur "édition cible non valide" avec Java 11

[ERROR] Failed to execute goal org.Apache.maven.plugins:maven-compiler-
plugin:3.8.0:compile (default-compile) on project projects-migration: 
Fatal error compiling: error: invalid target release: 1.11 -> [Help 1]

si vous définissez 1.11 au lieu de simplement 11 dans le POM.

Incorrect:

<Java.version>1.11</Java.version>

Correct:

<Java.version>11</Java.version>
3
Andrew Spencer

J'ai eu le même problème, j'avais besoin de 2 étapes pour le corriger:

  1. Assurez-vous que Java_HOME est réglé correctement sur JDK.
  2. JDK et JRE dans Eclipse doivent pointer vers la même version.

Pour moi, 1 étape était juste, la 2ème étape avait un problème. Dans Eclipse "Propriétés du projet" Chemin de construction "JRE installé" pointez sur JDK.

2
sandeep pandey

Si vous utilisez Maven au sein d’un serveur d’intégration continue, vérifiez bien ses paramètres, car ils risquent de remplacer le kit JDK utilisé par Maven. Pour Jenkins, je devais ajouter le nouveau JDK 1.8 dans les paramètres généraux et configurer mon projet pour l’utiliser.

0
Henno Vermeulen

Vous utilisez une version à accès anticipé de 1.8. Maintenant que cela a été publié, vous devez installer la version publiée.

Vérifiez votre installation principale pour voir si vous avez une configuration qui spécifie un JDK particulier. Il arrive parfois que des scripts d'encapsuleur réinitialisent Java_HOME avant le lancement de maven ou que l'exécutable maven soit lancé dans un encapsuleur faisant référence à un fichier de configuration susceptible de vous lier à une machine virtuelle Java particulière.

0
Edwin Buck