Administrar múltiples instalaciones de Java

1

Después de horas de buscar en Google, estoy un poco deprimido con los resultados ...

Por motivos de trabajo, tengo varias instalaciones de Java, algunas de ellas a través de SdkMan, y algunas de ellas parecen encontrarse en / Library / Java ...

Ahora, para solucionar el problema: si intento iniciar cualquier archivo .jar (autocodificado o no) mediante un doble clic, simplemente dice "No se pudo abrir el archivo jar, compruebe si la consola tiene errores".

Pero si intento iniciar el mismo archivo jar desde la Terminal, funciona bien.

Estoy seguro de que mi Terminal utiliza otra instalación de Java que no sea el 'JarLauncher.app' de MacOS, pero no puedo encontrar una manera de especificar la instalación de Java para esto. En Configuración del sistema > Java, debe abrir un Panel de control de Java, pero se niega a abrirlo, incluso después de presionar el botón de volver a abrir varias veces.

Intenté eliminar los archivos antiguos de instalación de Java con las guías que encontré en línea, pero hasta ahora no he tenido suerte.

¿Alguien sabe cómo resolver esos problemas? Mi trabajo diario es escribir pequeños scripts de archivos .jar para ayudar a los colegas en sus flujos de trabajo.

Actualmente están instalados: Java8u121 a través de SDKman y / Library / Java Folder, y Java9 a través de Oracle Install original. Intenté eliminar los demás, pero no estoy seguro de si los limpié lo suficiente.

Lamentablemente, no es una opción restablecer todo el sistema, es una computadora portátil administrada por la empresa y no sé qué pasará con todos los sistemas conectados, sobre todo con ActiveDirectory Sync.

Usando MacOS Sierra 10.12.6, aún no se le permite actualizar a High Sierra.

    
pregunta TheRealHypo 14.03.2018 - 16:37

1 respuesta

0

El /Library/Internet Plug-Ins/JavaAppletPlugin.plugin (el JRE) es el que lanza el archivo ejecutable a través de 'JarLauncher.app', y es el que está instalado desde Oracle, y es el último JDK instalado.

Entonces, si dices que tienes JDK 9 de Oracle, como el único de Oracle, entonces será JavaAppletPlugin.plugin de JDK 9 que se debe usar en este momento, lo que no funciona junto con JDK 8 (de la caja).

Una cosa que podrías intentar es instalar todos tus JDKs de Oracle, y luego guardar uno a uno el JavaAppletPlugin.plugin de cada versión que quieras usar en una carpeta de tu elección, desde donde puedes copiar / anular el complemento actual en /Library/Internet Plug-Ins/ : tal vez cree una pequeña secuencia de comandos de Terminal, que contenga la configuración JAVA_HOME y copie / anule el complemento. Luego, ejecutará esta secuencia de comandos justo antes de que desee probar su archivo ejecutable.

EDIT:

Después de pensar un poco, creo que primero debes hacer algo de limpieza.

Esto significa eliminar /Library/Internet Plug-Ins/JavaAppletPlugin.plugin y todos los JDK bajo /Library/Java/JavaVirtualMachines/ .

Luego descargue todos los JDK necesarios de Oracle e instálelos uno por uno, primero la versión más baja, y recuerde hacer una copia de seguridad de /Library/Internet Plug-Ins/JavaAppletPlugin.plugin instalado después de cada instalación en la carpeta que elija.

He guardado mis complementos con los nombres:

  • JavaAppletPlugin-7.0.80.plugin
  • JavaAppletPlugin-8.0.162.plugin
  • JavaAppletPlugin-9.0.4.plugin

También debería poder abrir el panel de control de java para cada JDK instalado, pero solo para el que tiene instalado actualmente.

Ahora puede crear un script que actualice el /Library/Internet Plug-Ins/JavaAppletPlugin.plugin ; a continuación se encuentra un script rápido que hice donde instalé el complemento JRE 7_80 (reemplace < PATH_TO_BACKUP_OF_PLUGINS > con su ruta) , que también es el panel de control de java, por lo que debería poder abrirlo desde Configuración.

#!/bin/sh

sudo rm -rf "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin"
sudo cp -rf "<PATH_TO_BACKUP_OF_PLUGINS>/JavaAppletPlugin-7.0.80.plugin" "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin"

Si desea una secuencia de comandos para cada complemento, o creará una secuencia de comandos que toma una entrada de versión, depende de usted.

JavaAppletPlugin.plugin y JAVA_HOME deben seguirse, tal vez ya tenga una forma de cambiar JAVA_HOME hoy.

La forma en que normalmente configuro mi JAVA_HOME es como a continuación, donde he agregado algunas funciones a mi .bash_profile

jdk7() {
   export JAVA_HOME='/usr/libexec/java_home -v '1.7.*''
   export PATH=$JAVA_HOME/bin:$PATH
}

jdk8() {
   export JAVA_HOME='/usr/libexec/java_home -v '1.8.*''
   export PATH=$JAVA_HOME/bin:$PATH
}

jdk9() {
   export JAVA_HOME='/usr/libexec/java_home -v '9.*''
   export PATH=$JAVA_HOME/bin:$PATH
}
    
respondido por el Rene Larsen 14.03.2018 - 17:30

Lea otras preguntas en las etiquetas