¿Cómo puedo cambiar la máquina virtual Java predeterminada de Mac OS devuelta desde / usr / libexec / java_home

108

(No estaba seguro de si esto debería continuar en SU ​​... la migración es ciertamente una opción, pero más programadores leen preguntas aquí, así que aquí va).

Estoy ejecutando Mac OS X 10.8.4 y tengo instalado el JDK 1.6.0_51 de Apple y el JDK 1.7.0_25 de Oracle. Recientemente instalé JDK de vista previa 1.8 de Oracle para algún software de versión preliminar que lo requiere. Ahora, cuando ejecuto / usr / libexec / java_home, obtengo esto:

$ /usr/libexec/java_home -V
Matching Java Virtual Machines (4):
    1.8.0, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home
    1.7.0_25, x86_64:   "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home
    1.6.0_51-b11-457, x86_64:   "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
    1.6.0_51-b11-457, i386: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

Excelente.

Sin embargo, ejecutando:

$ java -version

Devoluciones:

java version "1.8.0-ea"

Eso significa que la versión predeterminada de Java es actualmente la versión preliminar, que rompe algunos paquetes "normales" (en mi caso, VisualVM).

No puedo configurarlo JAVA_HOMEporque la ejecución de aplicaciones ignora las variables de entorno, incluso cuando se inicia desde la línea de comandos (p $ open /Applications/VisualVM.app.

Entonces, ¿hay un archivo que pueda editar donde pueda establecer mis preferencias de pedido de JVM globalmente ?

(Por favor, no me diga que inicie el Panel de preferencias de Java porque eso simplemente no funciona: no contiene nada útil y solo enumera una de las 4 JVM que he instalado).

Actualización :

Las JVM de Oracle viven en /Library/Java/JavaVirtualMachines. jdk1.8.0.jvm.xyzCambiar el nombre del directorio JDK 1.8 a no cambia nada: java_homeaún lo encuentra en el lugar correcto, y ejecutar / usr / bin / java aún ejecuta la JVM 1.8. Esto no es un problema con los enlaces sincronizados, etc.

Respuestas a preguntas similares

Si bien esta respuesta ofrece lo que equivale a un truco que eliminará las versiones de Java para que java_home no las recoja, todavía no responde a esta pregunta de cómo java_home elige su valor predeterminado y si los usuarios pueden configurarlo de forma no destructiva .

Christopher Schultz
fuente
Escriba 'which java' y siga las rutas de navegación. /usr/bin/javaes solo un enlace simbólico
Brian Roach
11
He estado allí, he hecho eso. /usr/bin/javaapunta a /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java. El Versionsdirectorio no contiene un enlace simbólico al 1.8.0 JDK. En su lugar, contiene un directorio llamado Aque Currentapunta a. Ano es un "JAVA_HOME. Tiene un subdirectorio llamado Commandsque tiene un javacomando, pero es un binario universal opaco que hace quién sabe qué. Sospecho que usa java_home, etc. para decidir qué JVM usar.
Christopher Schultz
2
Si esto no está relacionado con el tema, migre en lugar de cerrar. FWIW, se trata de "herramientas de software comúnmente utilizadas por los programadores", por lo que cerrar "fuera del tema" es falso.
Christopher Schultz
¡Sí, esto es frustrante! Solo quiero un JDK para todos, o quizás 2 que pueda cambiar entre 1.7 y 1.8 fácilmente.
Brian
1
Encontré esta respuesta SO útil para esta pregunta: stackoverflow.com/a/44169445/2987755
dkb

Respuestas:

89

Creo que JAVA_HOMEes lo mejor que puedes hacer. A las herramientas de línea de comandos les gusta javay javacrespetarán esa variable de entorno, que puede usar /usr/libexec/java_home -v '1.7*'para darle un valor adecuado para poner JAVA_HOMEen orden para que las herramientas de línea de comandos usen Java 7.

export JAVA_HOME="`/usr/libexec/java_home -v '1.7*'`"

Pero los paquetes de aplicaciones estándar en los que se puede hacer doble clic no usan los JDK instalados debajo /Library/Java. Los .apppaquetes de estilo antiguo JavaApplicationStubque usan Apple usarán Apple Java 6 de /System/Library/Frameworks, y los de estilo nuevo construidos con AppBundler sin un JRE incluido usarán el JRE "público" en /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home, que está codificado en el código stub y no se puede cambiar, y no puede tener dos JRE públicos diferentes instalados al mismo tiempo.


Editar: Eché un vistazo a VisualVM específicamente, asumiendo que estás usando la versión del "paquete de aplicaciones" de la página de descarga , y esta aplicación en particular no es una aplicación de AppBundler, sino que su ejecutable principal es un script de shell que llama a un número de otros scripts de shell y lee varios archivos de configuración. De forma predeterminada, elige el JDK más nuevo /Library/Javasiempre que sea 7u10 o posterior, o usa Java 6 si su instalación de Java 7 es la actualización 9 o anterior. Pero al desentrañar la lógica en los scripts de shell, me parece que puede especificar un JDK en particular usando un archivo de configuración.

Cree un archivo de texto ~/Library/Application Support/VisualVM/1.3.6/etc/visualvm.conf(reemplace 1.3.6 con cualquier versión de VisualVM que esté usando) que contenga la línea

visualvm_jdkhome="`/usr/libexec/java_home -v '1.7*'`"

y esto lo obligará a elegir Java 7 en lugar de 8.

Ian Roberts
fuente
Este no parece ser el caso en mi sistema. El lanzamiento de VisualVM antes de la instalación de JDK 1.8 funcionó. Después de JDK1.8, VisualVM muestra la pantalla de inicio y luego muere. Mover el directorio JDK1.8 fuera de / Library / Java restaura su capacidad de ejecución.
Christopher Schultz
@ChristopherSchultz He echado un vistazo al paquete VisualVM y resulta que no es una aplicación normal de aplicación. Vea mi edición para una posible solución.
Ian Roberts
Lo siento, escribí mi comentario anterior antes de su edición. Verificaré cómo lograr que VisualVM se ejecute con esa técnica, pero es poco probable que sea de aplicación universal. Tengo un montón de otro software basado en Java que también ejecuto, como Eclipse, JasperReports iReport, etc., que probablemente se vean afectados por esto. Creo que prefiero mover el directorio JDK1.8 a otro lugar y usarlo explícitamente con JAVA_HOME para las (pocas) veces que realmente lo necesito.
Christopher Schultz
1
Sí, tienes razón, JAVA_HOMEes el camino a seguir y, en general, tu mejor opción es especificar la versión menor que necesitas en otros casos. Según el desmontaje, resulta que puede export JAVA_VERSION=1.7establecer de java_homeforma predeterminada que se muestre JKD7 en lugar de JDK8, pero eso se rompe java_home -v 1.6porque lo java-homeinterpreta como una restricción adicional y se da por vencido debido a restricciones mutuamente insatisfactorias, luego simplemente va con el 1.8 predeterminado incluso con la --failfastopción.
andrewdotn
2
No puedo entender por qué el Panel de control de Java de Preferencias del sistema no solo presenta una lista para seleccionar, en lugar de tener que recurrir a scripts / comandos de shell. Sospecho que esto es solo para Applets que se ejecutan en el navegador ...
JGFMK
51

También estuve allí y busqué en todas partes cómo /usr/libexec/java_homefunciona, pero no pude encontrar ninguna información sobre cómo determina las máquinas virtuales Java disponibles que enumera.

He experimentado un poco y creo que simplemente ejecuta ls /Library/Java/JavaVirtualMachinesay luego inspecciona ./<version>/Contents/Info.plisttodos los tiempos de ejecución que encuentra allí.

Luego los ordena descendiendo por la teclaJVMVersion contenida en Info.plist y, de forma predeterminada, utiliza la primera entrada como su JVM predeterminada.

Creo que lo único que podríamos hacer es cambiar el plist: sudo vi /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Info.plisty luego modificar JVMVersion de 1.8.0a otra cosa que lo ordene al final en lugar de al superior, como !1.8.0.

Algo como:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    ...
    <dict>
            ...
            <key>JVMVersion</key>
            <string>!1.8.0</string>   <!-- changed from '1.8.0' to '!1.8.0' -->`

y luego desaparece mágicamente de la parte superior de la lista:

/usr/libexec/java_home -verbose
Matching Java Virtual Machines (3):
    1.7.0_45, x86_64:   "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
    1.7.0_09, x86_64:   "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home
    !1.8.0, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home

Ahora deberá cerrar sesión / iniciar sesión y luego:

java -version
java version "1.7.0_45"

:-)

Por supuesto, no tengo idea si algo más se rompe ahora o si la versión 1.8.0-ea de java todavía funciona correctamente.

Probablemente no debería hacer nada de esto, sino simplemente desinstalar 1.8.0.

Sin embargo, hasta ahora esto me ha funcionado.

void256
fuente
Esto funcionó para mí. Tuve que usar este ajuste para mantener el complemento Idea Sbt funcionando para mí en MacOS. Lo menciono en mi blog agilebuild.blogspot.com/2014/02/…
antoine
Esto funciona, pero parece un poco complicado y puede que no parezca un procedimiento de operación estándar. Me pregunto si hay un enfoque mejor.
Weibo Li
Todavía me gustaría una solución para esto, pero para configurar el JDK para que Intellij lo use, agregué esto a mi zshenv: export IDEA_JDK = /usr/libexec/java_home -v 1.7. Creo que haré lo mismo con JAVA_HOME ...
David Resnick
Me las arreglo para usar esta respuesta para evitar usar Java 9 al iniciar aplicaciones de doble clic (debido a un problema en el explorador de Keystore Store). ¡Gracias!
Nicolas Henneaux
2
Un extracto de Instalación de JDK y JRE en macOS : Después de instalar Java para macOS 2012-006, /usr/bin/javaencontrará el JDK más reciente instalado y lo usará para todas las herramientas de línea de comandos relacionadas con Java en /usr/bin.
Jeremy Kao
7

De hecho, es bastante fácil. Digamos que tenemos esto en nuestra carpeta JavaVirtualMachines:

  • jdk1.7.0_51.jdk
  • jdk1.8.0.jdk

Imagine que 1.8 es nuestro predeterminado, luego simplemente agregamos una nueva carpeta (por ejemplo, 'antigua') y movemos la carpeta jdk predeterminada a esa nueva carpeta. ¡Hazlo de java -versionnuevo y listo, 1.7!

Usuario404
fuente
1
Increíble, pero funcionó ... Gracias Mac OS Mojave
Michał Dobi Dobrzański
5

Es bastante simple, si no le importa arremangarse ... / Library / Java / Home es el predeterminado para JAVA_HOME, y es solo un enlace que apunta a uno de:

  • /System/Library/Java/JavaVirtualMachines/1.?.?.jdk/Contents/Home
  • /Library/Java/JavaVirtualMachines/jdk1.?.?_??.jdk/Contents/Home

Así que quería cambiar mi versión predeterminada de JVM / JDK sin cambiar el contenido de JAVA_HOME ... / Library / Java / Home es la ubicación estándar para la JVM / JDK actual y eso es lo que quería preservar ... me parece para ser la forma más fácil de cambiar las cosas con los menores efectos secundarios.

De hecho, es muy simple. Para cambiar qué versión de java ve con java -version, todo lo que tiene que hacer es alguna versión de esto:

cd /Library/Java
sudo rm Home
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home ./Home

No me he tomado el tiempo, pero un script de shell muy simple que hace uso de / usr / libexec / java_home y ln para volver a señalar el enlace simbólico anterior debería ser estúpidamente fácil de crear ...

Una vez que haya cambiado dónde apunta / Library / Java / Home ... obtendrá el resultado correcto:

cerebro:~ magneto$ java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27) Java HotSpot(TM)
64-Bit Server VM (build 25.60-b23, mixed mode)
jrypkahauer
fuente
1
No es así como funcionan estas cosas: de /Library/Java/Homehecho es un enlace simbólico, pero apunta a /System/Library/Frameworks/JavaVM.framework/Homeque en sí mismo está en una gran confusión de enlaces simbólicos que finalmente te lleva a ... un comando mágico que determina el JRE correcto para iniciar. Tenga en cuenta que /usr/libexec/java_hometambién se vincula con esta magia. Por lo tanto, puede interrumpir todo simplemente reemplazando los enlaces simbólicos y apuntando a un solo JRE, pero tendrá que actualizarlo cada vez. Evidentemente no hay un comando como set_preferred_jvm_versiono algo similar.
Christopher Schultz
1
Sin embargo, la ventaja de esta técnica es que no requiere que se establezca en JAVA_HOMEningún lugar. Jugaré con esta técnica para ver si da como resultado programas basados ​​en Java que se ejecutan con la máquina virtual Java "preferida". Sospecho que lo hará, pero es bastante frágil.
Christopher Schultz
Bueno, estos días solo tengo esto en .bash_profile:export JAVA_HOME=`/usr/libexec/java_home -v 12`
jrypkahauer
Esto no funciona para hacer doble clic en un icono, que era el punto principal. Las soluciones que solo funcionan desde la línea de comandos no son ... soluciones.
Christopher Schultz
3

Instrucciones de desinstalación de Oracle para Java 7 funcionaron para mí.

Extracto:

Desinstalación del JDK Para desinstalar el JDK, debe tener privilegios de administrador y ejecutar el comando remove como root o usando la herramienta sudo (8).

Vaya a / Library / Java / JavaVirtualMachines y elimine el directorio cuyo nombre coincide con el siguiente formato: *

/Library/Java/JavaVirtualMachines/jdk<major>.<minor>.<macro[_update]>.jdk

Por ejemplo, para desinstalar 7u6:

% rm -rf jdk1.7.0_06.jdk

duma
fuente
2
Esta pregunta no se trataba de la desinstalación ... se trataba de elegir la JVM "principal" de las que uno ha instalado ...
Christopher Schultz
3

Un poco tarde, pero como este es un problema continuo con Mac OSX ...

La solución más simple que encontré fue simplemente eliminar las cosas de OpenJDK que instala Apple. Cada vez que llega una actualización de Mac OSX, se instala y deberá eliminarla nuevamente.

Esto funciona muy bien si desarrolla aplicaciones para Google App Engine en su mac usando Java. OpenJDK no funciona bien y la versión de Java que viene con la actualización de Mac OSX Yosemite hará que el complemento de Eclipse para App Engine se bloquee en cada implementación con el útil error: "Tiempo de lectura agotado".

Mo'in Creemers
fuente
1
Es curioso ... Pensé que Apple había eliminado Java por completo en este punto. No recuerdo haber quitado manualmente Java 1.6 JVM de Apple, y definitivamente ya no está aquí. En cualquier caso, esto realmente no soluciona el problema original que era especificar la JVM preferida dada una selección que se ha instalado.
Christopher Schultz
Estás en lo correcto. No responde la pregunta. Responde a esto: si elimina la JVM que se está utilizando, se utiliza la 'siguiente' en la lista. Quizás eso ayude.
Mo'in Creemers
¿Esto explica por qué después de ejecutar una instalación de jdk 8, no aparece en la carpeta JavaVirtualMachines? Todo lo que veo es "1.6.0.jdk" sin importar la versión que instale.
whyoz
@whyoz Acabo de instalar jdk-8u31-macosx-x64 en osx 10.10.2 y la VM se instaló en la carpeta JavaVirtualMachines como se esperaba.
Mo'in Creemers
¿Está ejecutando Parallels por casualidad? Lo instalé en el lado de Windows de Parallels y 8u31 instalado como se esperaba ... pero no en el lado de Mac ..
whyoz
3

Probé "jenv" y otras cosas como configurar "JAVA_HOME" sin éxito. Ahora yo y terminé con la siguiente solución

function setJava {
    export JAVA_HOME="$(/usr/libexec/java_home -v $1)"
    launchctl setenv JAVA_HOME $JAVA_HOME
    sudo ln -nsf "$(dirname ${JAVA_HOME})/MacOS" /Library/Java/MacOS 
    java -version
}

(agregado a ~ / .bashrc o ~ / .bash.profile o ~ / .zshrc)

Y llamando así:

setJava 1.8

java_home manejará la entrada incorrecta. para que no puedas hacer algo mal. Maven y otras cosas recogerán la versión correcta ahora.

Yuna Braska
fuente
1

De hecho, miré esto un poco en el desensamblador, ya que la fuente no está disponible.

/ usr / bin / java y / usr / libexec / java_home utilizan JavaLaunching.framework. De hecho, la variable de entorno JAVA_HOME es verificada primero por / usr / bin / java y amigos (pero no por / usr / libexec / java_home). El marco usa las variables de entorno JAVA_VERSION y JAVA_ARCH para filtrar las JVM disponibles. Entonces, por defecto:

$ /usr/libexec/java_home -V
Matching Java Virtual Machines (2):
    11.0.5, x86_64: "Amazon Corretto 11"    /Library/Java/JavaVirtualMachines/amazon-corretto-11.jdk/Contents/Home
    1.8.0_232, x86_64:  "Amazon Corretto 8" /Library/Java/JavaVirtualMachines/amazon-corretto-8.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/amazon-corretto-11.jdk/Contents/Home

Pero configurar, digamos, JAVA_VERSION puede anular el valor predeterminado:

$ JAVA_VERSION=1.8 /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/amazon-corretto-8.jdk/Contents/Home

También puede configurar JAVA_LAUNCHER_VERBOSE = 1 para ver algunos registros de depuración adicionales en cuanto a rutas de búsqueda, JVM encontradas, etc., con / usr / bin / java y / usr / libexec / java_home.

En el pasado, JavaLaunching.framework en realidad usaba el sistema de preferencias (bajo el dominio com.apple.java.JavaPreferences) para establecer el orden de JVM preferido, permitiendo que la JVM predeterminada se estableciera con PlistBuddy , pero lo mejor que puedo decir es que El código se ha eliminado en versiones recientes de macOS. Las variables de entorno parecen ser la única forma (además de editar Info.plist en los propios paquetes de JDK).

Por supuesto, la configuración de las variables de entorno predeterminadas se puede realizar a través de su .profile o mediante launchd , si necesita que se establezcan a nivel de sesión.

Dan Walters
fuente
Esta es una gran información, Dan. El uso .profileno es útil para mi caso de uso (lanzar una aplicación desde, por ejemplo, Launchpad) pero el consejo launchdes bueno. Tendré que intentarlo, ya que la locura de las versiones recientes de Java significa que tengo varias generaciones de Java instaladas simultáneamente, con diferentes niveles de confianza (personal).
Christopher Schultz
-2

Editar: esta información es para visualvm específicamente, no para ninguna otra aplicación de Java

Como han mencionado otros, debe modificar visualvm.conf

Para la última versión de JvisualVM 1.3.6 en Mac, los directorios de instalación han cambiado.

Actualmente se encuentra en /Applications/VisualVM.app/Contents/Resources/visualvm/etc/visualvm.conf .

Sin embargo, esto puede depender de dónde haya instalado VisualVM. La forma más fácil de encontrar dónde su VisualVM es iniciarlo y luego mirar el proceso usando:

ps -ef | grep VisualVM

Verás algo como:

... -Dnetbeans.dirs = / Aplicaciones / VisualVM.app / Contenidos / Recursos / visualvm / visualvm ...

Desea tomar la propiedad netbeans.dir y buscar un directorio y encontrará la carpeta etc.

Descomente esta línea en visualvm.conf y cambie la ruta al jdk

visualvm_jdkhome="/path/to/jdk"

Además, si tiene lentitud con su visualvm y tiene mucha memoria, sugeriría que aumente en gran medida la cantidad de memoria disponible y la ejecute en modo servidor:

visualvm_default_options="-J-XX:MaxPermSize=96m -J-Xmx2048m -J-Xms2048m -J-server -J-XX:+UseCompressedOops -J-XX:+UseConcMarkSweepGC -J-XX:+UseParNewGC -J-XX:NewRatio=2 -J-Dnetbeans.accept_license_class=com.sun.tools.visualvm.modules.startup.AcceptLicense -J-Dsun.jvmstat.perdata.syncWaitMs=10000 -J-Dsun.java2d.noddraw=true -J-Dsun.java2d.d3d=false"
Celandro
fuente
Mal consejo: modificar el script de inicio para una aplicación en particular probablemente romperá la aplicación y no resuelve el problema original de cambiar la JVM predeterminada para el sistema operativo.
Christopher Schultz
Desafortunadamente, como lo mencionaron otros, jvisualvm no usa métodos estándar para elegir un jvm. Esta es la única solución para esta aplicación.
Celandro
Como indico en mi respuesta , no necesita modificar nada dentro del paquete de la aplicación, la aplicación puede cargar su configuración desde ~/Library/Application Support/VisualVM/1.3.6/etc/visualvm.conf.
Ian Roberts
-2

Tuve una situación similar y el siguiente proceso funcionó para mí:

  1. En la terminal, escriba

    vi ~/.profile
  2. Luego agregue esta línea en el archivo y guarde

    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk<version>.jdk/Contents/Home

    donde la versión es la de su computadora, como 1.7.0_25

  3. Salga del editor, luego escriba el siguiente comando para que sea efectivo

    source ~/.profile 

Luego escriba java -version para verificar el resultado

    java -version 

¿Qué es .profile? De: http://computers.tutsplus.com/tutorials/speed-up-your-terminal-workflow-with-command-aliases-and-profile--mac-30515

El archivo .profile es un archivo oculto. Es un archivo opcional que le dice al sistema qué comandos ejecutar cuando el usuario cuyo archivo de perfil es inicia sesión. Por ejemplo, si mi nombre de usuario es bruno y hay un archivo .profile en / Users / bruno /, todo su contenido se ejecutará durante el procedimiento de inicio de sesión.

Tony
fuente
Esto no funcionará al iniciar VisualVM desde Launchpad. Lanzar desde la línea de comandos nunca es un problema, ya que puede configurar la variable de entorno JAVA_HOME.
Christopher Schultz
-2

MacOS usa / usr / libexec / java_home para encontrar la versión actual de Java. Una forma de evitarlo es cambiar el archivo plist como se explica en @ void256 arriba. Otras formas es tomar la copia de seguridad de java_home y reemplazarla con su propio script java_home que tiene el código
echo $ JAVA_HOME

Ahora exporte JAVA_HOME a la versión deseada del SDK agregando los siguientes comandos a ~ / .bash_profile. export JAVA_HOME = "/ System / Library / Java / JavaVirtualMachines / 1.6.0.jdk / Contents / Home" launchctl setenv JAVA_HOME $ JAVA_HOME /// Convertir la variable de entorno en global

Ejecute el comando source ~ / .bash_profile para ejecutar los comandos anteriores.

Siempre que uno necesite cambiar JAVA_HOME, puede restablecer el valor de JAVA_HOME en el archivo ~ / .bash_profile.

Rajat
fuente
Todo lo que se base en variables de entorno no funcionará. El punto es que las aplicaciones lanzadas a través de LaunchPad, etc. no tendrán esa configuración ambiental. El truco de plist anterior parece el "mejor" en el sentido de que realmente logra el resultado deseado. Todavía no estoy seguro de las desventajas. Vea la respuesta de @Tony que tiene el mismo problema.
Christopher Schultz
-3

Quería cambiar la versión de Java predeterminada de 1.6 * a 1.7 *. Probé los siguientes pasos y funcionó para mí:

  • Se eliminó el enlace "java" de / usr / bin.
  • Lo creó de nuevo, apuntando a la nueva ubicación:

ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/bin/java java

  • verificado con "java -version"

versión de java "1.7.0_51"
Java (TM) SE Runtime Environment (compilación 1.7.0_51-b13)
Java HotSpot (TM) 64-Bit Server VM (compilación 24.51-b03, modo mixto)

usuario2756423
fuente
No responde a la pregunta: no afectará el comportamiento de /usr/libexec/java_home.
Christopher Schultz