Error de JAVA_HOME al construir Maven, versión 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

He actualizado mi OSX a 10.8.4. Después de la actualización de OSX, actualicé mi JDK y JRE a 7. Pero recibo el error anterior cuando intento la compilación del proyecto Maven.

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

Me sale la respuesta a continuación

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

Para esto ls -al /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/bin

Ya no veo ningún contenido en CurrentJDK.

Al correr /usr/libexec/java_home

Yo obtengo:

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

Soy bastante nuevo en trabajar con OS X. Avíseme si podría haber perdido algún punto para hacerlo exitoso.

arvind406
fuente
¿Se puede ejecutar echo $JAVA_HOME, ls -al /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/biny ls -al /System/Library/Frameworks/JavaVM.framework/Versions/y sumar el resultado a la pregunta?
nohillside
@patrix Bashrc -> export JAVA_HOME=/usr/libexec/java_home .profile -> export PATH=${JAVA_HOME}/bin:$PATH export CATALINA_HOME=/Library/Tomcat/Home .bashrc y .profile tiene los comandos anteriores mencionados en ella ..
arvind406
@Patrix .. Veo que la ruta de Java no se recupera del archivo bashrc. Cuando configuré JAVA_HOME desde la terminal por separado solo entonces pude construir un proyecto. ¿Por qué podría estar pasando esto así? Alguna idea ?
arvind406

Respuestas:

9

Apple recomienda configurar JAVA_HOME en "/ usr / libexec / java_home".

Lo que funcionó para mí fue envolver esto alrededor de $ (). Así que terminé configurando JAVA_HOME como $ (/ usr / libexec / java_home) con los siguientes comandos:

vim ~/.bash_profile 
export JAVA_HOME=$(/usr/libexec/java_home)
source ~/.bash_profile
hcpl
fuente
¡Esto funcionó para mí perfectamente!
rdegges
2

/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/bin/java si existe es el Java suministrado por Apple, cuya última versión sería un JRE 1.6.

Para usar Oracle JDK (el java 7 que menciona) use la ruta / usr / bin / java si lo ha instalado completamente. Tenga en cuenta que el JRE es solo para applets de Java y, por lo tanto, no afecta a / usr / bin / java

Para obtener más información, consulte la documentación de instalación de Oracle

y nota a partir de ahí

Para ejecutar una versión diferente de Java, especifique la ruta completa o use la herramienta java_home:

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

Para obtener más información, consulte la página del comando man java_home (1).

usuario151019
fuente
.profile -> export PATH = $ {JAVA_HOME} / bin: $ PATH export CATALINA_HOME = / Library / Tomcat / Home
arvind406
@arvind, ¿qué significan esos comentarios?
user151019
@ arvind406 sí, pero ¿qué agrega o pregunta sobre mi respuesta?
user151019
Los comentarios anteriores se comentaron en una ventana incorrecta. Disculpas Después de actualizar a 10.8 OSX, he actualizado JDK y JRE a 7. He actualizado la pregunta una vez más. Eche un vistazo y hágame saber si me estoy yendo mal en alguna parte. Al ejecutar este comando /usr/libexec/java_homeme sale/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home
arvind406
@ Mark ... Veo que la ruta no se recupera del archivo bashrc. Cuando configuré JAVA_HOME desde la terminal por separado solo entonces pude construir un proyecto. ¿Por qué podría estar pasando esto así? Alguna idea ?
arvind406
1

Siga este enlace: /programming//a/44564303/5005676 Si ve el script mvn: el código falla aquí ---

Pasos para la depuración y reparación:

Paso 1: Abra el script mvn /Users/Username/apache-maven-3.0.5/bin/mvn (Abra con el comando less como: less /Users/Username/apache-maven-3.0.5/bin/mvn)

Paso 2: descubra el siguiente código en el 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

Paso 3: está sucediendo porque no se configuró la variable JAVACMD. Entonces muestra el error.

Nota: para arreglarlo

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/

Clave: si desea que sea permanente, abra emacs.profile

publique los comandos y presione Ctrl-x Ctrl-c (save-buffers-kill-terminal).

Shubham Verma
fuente