Erreur JAVA_HOME lors de la construction de maven, version OSX-10.8.4

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

J'ai mis à jour mon OSX vers 10.8.4. Après la mise à niveau d'OSX, j'ai mis à niveau mon JDK et JRE vers 7. Mais j'obtiens l'erreur ci-dessus lorsque j'essaie de construire le projet maven.

Quand je cours ls -al /System/Library/Frameworks/JavaVM.framework/Versions/

Je reçois la réponse ci-dessous

drwxr-xr-x  11 root  wheel  374 Jul 22 22:33 .
drwxr-xr-x  10 root  wheel  340 Jul 22 18:30 ..
lrwxr-xr-x   1 root  wheel   10 Jul 22 18:30 1.4 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 Jul 22 18:30 1.4.2 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 Jul 22 18:30 1.5 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 Jul 22 18:30 1.5.0 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 Jul 22 18:30 1.6 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 Jul 22 18:30 1.6.0 -> CurrentJDK
drwxr-xr-x   7 root  wheel  238 Jul 22 18:30 A
lrwxr-xr-x   1 root  wheel    1 Jul 22 18:30 Current -> A
lrwxr-xr-x   1 root  wheel   59 Jul 22 18:30 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents

Pour ça ls -al /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/bin

Je ne vois aucun contenu dans CurrentJDK plus loin.

En cours d'exécution /usr/libexec/java_home

Je reçois:

/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home

Je suis à peu près nouveau dans le travail avec OS X. Faites-moi savoir si j'ai peut-être manqué un moment pour réussir.

arvind406
la source
Pouvez - vous courir echo $JAVA_HOME, ls -al /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/binet ls -al /System/Library/Frameworks/JavaVM.framework/Versions/et ajouter le résultat à la question?
nohillside
@patrix .bashrc -> export JAVA_HOME=/usr/libexec/java_home .profile -> export PATH=${JAVA_HOME}/bin:$PATH export CATALINA_HOME=/Library/Tomcat/Home .bashrc et .profile contient les commandes ci-dessus mentionnées.
arvind406
@Patrix .. Je vois que le chemin java n'est pas récupéré du fichier bashrc. Lorsque j'ai défini JAVA_HOME à partir du terminal séparément uniquement, j'ai pu créer un projet. Pourquoi cela pourrait-il se produire comme ça? Une idée ?
arvind406

Réponses:

9

Apple recommande de définir JAVA_HOME sur «/ usr / libexec / java_home».

Ce qui a fonctionné pour moi, c'était d'envelopper $ (). J'ai donc fini par configurer JAVA_HOME comme $ (/ usr / libexec / java_home) avec les commandes suivantes:

vim ~/.bash_profile 
export JAVA_HOME=$(/usr/libexec/java_home)
source ~/.bash_profile
hcpl
la source
Cela a parfaitement fonctionné pour moi!
rdegges
2

/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/bin/java s'il existe, c'est le Java fourni par Apple dont la dernière version serait un JRE 1.6.

Pour utiliser le JDK Oracle (le java 7 que vous mentionnez), utilisez le chemin / usr / bin / java si vous l'avez complètement installé. Notez que le JRE est uniquement pour les applets Java et n'affecte donc pas / usr / bin / java

Pour plus d'informations, consultez la documentation d'installation d'Oracle

et notez de là

Pour exécuter une autre version de Java, spécifiez le chemin d'accès complet ou utilisez l'outil java_home:

/usr/libexec/java_home -v 1.7.0_06 --exec javac -version

Pour plus d'informations, consultez la page de manuel java_home (1).

user151019
la source
.profile -> export PATH = $ {JAVA_HOME} / bin: $ PATH export CATALINA_HOME = / Library / Tomcat / Home
arvind406
@arvind que signifient ces commentaires?
user151019
@ arvind406 oui mais qu'est-ce que cela ajoute ou pose sur ma réponse?
user151019
les commentaires précédents ont été commentés dans une mauvaise fenêtre. Mes excuses. Après la mise à niveau vers 10.8 OSX, j'ai mis à jour le JDK et le JRE vers 7. J'ai mis à jour la question une fois de plus. veuillez regarder et faites-moi savoir si je me trompe quelque part. En exécutant cette commande, /usr/libexec/java_homeje reçois/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home
arvind406
@Mark .. Je vois que le chemin n'est pas récupéré du fichier bashrc. Lorsque j'ai défini JAVA_HOME à partir du terminal séparément uniquement, j'ai pu créer un projet. Pourquoi cela pourrait-il se produire comme ça? Une idée ?
arvind406
1

Suivez ce lien: /programming//a/44564303/5005676 Si vous voyez le script mvn: Le code échoue ici ---

Étapes de débogage et de correction:

Étape 1: Ouvrez le script mvn /Users/Username/apache-maven-3.0.5/bin/mvn (Ouvrez avec la commande less comme: less /Users/Username/apache-maven-3.0.5/bin/mvn)

Étape 2: Découvrez le code ci-dessous dans le script:

  if [ -z "$JAVACMD" ] ; then
  if [ -n "$JAVA_HOME"  ] ; then
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
      # IBM's JDK on AIX uses strange locations for the executables
      JAVACMD="$JAVA_HOME/jre/sh/java"
    else
      JAVACMD="$JAVA_HOME/bin/java"
    fi
  else
    JAVACMD="`which java`"
  fi
fi

if [ ! -x "$JAVACMD" ] ; then
  echo "Error: JAVA_HOME is not defined correctly."
  echo "  We cannot execute $JAVACMD"
  exit 1
fi

Étape 3: cela se produit car la variable JAVACMD n'a pas été définie. Il affiche donc l'erreur.

Remarque: pour le réparer

export JAVACMD=Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/bin/java

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

Clé: Si vous voulez que ce soit un fichier emacs.profile ouvert permanent

postez les commandes et appuyez sur Ctrl-x Ctrl-c (save-buffers-kill-terminal).

Shubham Verma
la source