Errore JAVA_HOME durante la compilazione di Maven, versione 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

Ho aggiornato il mio OSX a 10.8.4. Dopo l'aggiornamento di OSX ho aggiornato JDK e JRE a 7. Ma sto riscontrando l'errore sopra riportato quando sto provando a costruire il progetto.

Quando corro ls -al /System/Library/Frameworks/JavaVM.framework/Versions/

Ottengo la risposta di seguito

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

Per questo ls -al /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/bin

Non vedo più alcun contenuto in CurrentJDK.

In esecuzione /usr/libexec/java_home

Ottengo:

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

Sono praticamente nuovo a lavorare con OS X. Fammi sapere se avrei potuto perdere qualche punto ancora per riuscire.


È possibile eseguire echo $JAVA_HOME, ls -al /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/bined ls -al /System/Library/Frameworks/JavaVM.framework/Versions/e aggiungere il risultato alla domanda?
Nohillside

@patrix .bashrc -> export JAVA_HOME=/usr/libexec/java_home .profile -> export PATH=${JAVA_HOME}/bin:$PATH export CATALINA_HOME=/Library/Tomcat/Home .bashrc e .profile hanno i comandi sopra menzionati in esso ..
arvind406

@Patrix .. Vedo che il percorso java non viene recuperato dal file bashrc. Quando ho impostato JAVA_HOME solo dal terminale separatamente, ho potuto costruire un progetto. Perché potrebbe succedere così? Qualche idea ?
arvind406,

Risposte:


9

Apple consiglia di impostare JAVA_HOME su “/ usr / libexec / java_home“.

Ciò che ha funzionato per me è stato racchiuderlo in $ (). Quindi ho finito per configurare JAVA_HOME come $ (/ usr / libexec / java_home) con i seguenti comandi:

vim ~/.bash_profile 
export JAVA_HOME=$(/usr/libexec/java_home)
source ~/.bash_profile

Questo ha funzionato perfettamente per me!
rdegges

2

/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/bin/java se esiste è il Java fornito da Apple di cui l'ultima versione sarebbe un JRE 1.6.

Per usare Oracle JDK (il java 7 che menzioni) usa il percorso / usr / bin / java se lo hai installato completamente. Si noti che JRE è solo per applet Java e quindi non influenza / usr / bin / java

Per ulteriori informazioni, consultare la documentazione di installazione di Oracle

e nota da lì

Per eseguire una versione diversa di Java, specificare il percorso completo o utilizzare lo strumento java_home:

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

Per ulteriori informazioni, consultare la pagina man java_home (1).


.profile -> export PATH = $ {JAVA_HOME} / bin: $ PATH export CATALINA_HOME = / Library / Tomcat / Home
arvind406

@arvind cosa significano quei commenti?
user151019

@ arvind406 sì, ma cosa aggiunge o chiede della mia risposta?
user151019

i commenti precedenti sono stati commentati nella finestra sbagliata. Scuse. Dopo l'aggiornamento a 10.8 OSX ho aggiornato JDK e JRE a 7. Ho aggiornato di nuovo la domanda. date un'occhiata e fatemi sapere se sbaglio da qualche parte. /usr/libexec/java_home/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home
Eseguendo

@Mark .. Vedo che il percorso non viene recuperato dal file bashrc. Quando ho impostato JAVA_HOME solo dal terminale separatamente, ho potuto costruire un progetto. Perché potrebbe succedere così? Qualche idea ?
arvind406,

1

Segui questo link: /programming//a/44564303/5005676 Se vedi lo script mvn: il codice non riesce qui ---

Passaggi per il debug e la correzione:

Passaggio 1: apri lo script mvn /Users/Username/apache-maven-3.0.5/bin/mvn (Apri con il comando less come: less /Users/Username/apache-maven-3.0.5/bin/mvn)

Passaggio 2: scopri il codice seguente nello 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

Step3: sta accadendo perché la variabile JAVACMD non è stata impostata. Quindi visualizza l'errore.

Nota: per risolverlo

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/

Chiave: se vuoi che sia emacs.profile aperto permanente

invia i comandi e premi Ctrl-x Ctrl-c (save-buffers-kill-terminal).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.