2017-07-21 3 views
0

java est installé sur ce cheminJAVA_HOME ne fonctionne pas dans maven

$ which java 
/usr/bin/java 

mvn -version donne cette erreur

$ mvn -version 
The JAVA_HOME environment variable is not defined correctly 
This environment variable is needed to run this program 
NB: JAVA_HOME should point to a JDK not a JRE 

J'ai essayé quelques-unes des solutions qui étaient disponibles en ligne, mais ceux qui ne travaillent pas pour moi. Certaines de ces solutions ont suggéré d'ajouter

$export JAVA_HOME = /usr/libexec/java_home 

ou

$export JAVA_HOME = $(/usr/libexec/java_home) 

fichiers ci-dessous

~/.bashrc 
~/.bash_profile 
~/.profile 

Aussi lorsque je tente d'exécuter une commande shell, il me montre une erreur comme

Error: JAVA_HOME is not defined correctly. 
CARBON cannot execute /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/bin/java 
+0

Avez-vous essayé d'exécuter manuellement '/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/bin/java-version'? Sur Mac, je suggère d'utiliser '/Library/Java/JavaVirtualMachines/jdk1.8.0_141.jdk/Contents/Accueil/bin/java --version'? – khmarbaise

+0

Un peu en retard maintenant, mais je soupçonne que la plupart des problèmes d'OP auraient été causés soit par l'utilisation d'espaces autour du = lors de la définition de la valeur de l'environnement, soit après la modification du fichier bashrc. –

Répondre

3

Après avoir lutté pendant presque une journée, j'ai découvert que Maven ne lit pas le $JAVA_HOME de

~/.bashrc 
~/.bash_profile 
~/.profile 

mais il lit $JAVA_HOME de ~ .mavenrc

donc finalement, quand j'ajouté

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_141.jdk/Contents/Home 

dans ~.mavenrc puis obtenu la sortie

mvn -v 
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=1024m; support was removed in 8.0 
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T15:39:06-04:00) 
Maven home: /usr/local/Cellar/maven/3.5.0/libexec 
Java version: 1.8.0_141, vendor: Oracle Corporation 
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_141.jdk/Contents/Home/jre 
Default locale: en_CA, platform encoding: UTF-8 
OS name: "mac os x", version: "10.12.6", arch: "x86_64", family: "mac" 
+1

Merci. L'indication que maven recherche $ JAVA_HOME dans le fichier ~/.mavenrc au lieu des variables d'environnement shell est correcte. – wulfovitch

2

Pour la réparer, mettre à jour le JAVA_HOME comme suit:

$ vim .bash_profile 

export JAVA_HOME=$(/usr/libexec/java_home) 

$ source .bash_profile 

Run Maven nouveau:

$ mvn -version 
+0

J'ai suivi toutes les étapes que vous avez dites, mais je reçois toujours le même problème. Le chemin d'accès java home est mis à jour comme suit: $ echo $ JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.8.0_141.jdk/Contents/Home –

+0

Son dicton JAVA_HOME doit pointer vers un JDK et non un JRE. Assurez-vous que JDK est en place et non JRE. – ASR

1

Sur Ubuntu je faisais face un problème similaire. Je configuré $JAVA_HOME dans /etc/environment comme $JAVA_HOME=PATH_TO_JDK par exemple $JAVA_HOME=/home/max/jdk1.8.0_144

Attention avec

  • espace blanc après chemin déclaration $JAVA_HOME=/home/max/jdk1.8.0_144[[_NO_WHITE_SPACE_AFTER_DECLARATION]]
  • Ne mettez pas de double apostrophe $JAVA_HOME="/home/max/jdk1.8.0_144"
  • Ne mettez pas/bin par exemple $JAVA_HOME=/home/max/jdk1.8.0_144/bin < - Ceci est faux