Gestione di più installazioni Java

1

Dopo ore di ricerca su Google sono un po 'depresso con i risultati ..

Per lavoro, ho più installazioni Java, alcune delle quali tramite SdkMan, e alcune di esse sembrano trovarle in / Library / Java ...

Ora il problema: se provo ad avviare qualsiasi file .jar (auto codificato o meno) tramite doppio clic, dice semplicemente "Impossibile aprire il file jar, controlla la console per gli errori".

Ma se provo ad avviare lo stesso file jar da Terminal, funziona perfettamente.

So per certo che il mio terminale utilizza un'altra installazione Java rispetto a JarLauncher.app di MacOS, ma non riesco a trovare un modo per specificare l'installazione Java per questo. In Impostazioni di sistema > Java, dovrebbe aprire un pannello di controllo Java, ma si rifiuta di aprirlo, anche dopo aver premuto più volte il pulsante di riapertura.

Ho provato a rimuovere i vecchi file di installazione Java con le guide che ho trovato online, ma finora non ho avuto fortuna.

Qualcuno sa come risolvere questi problemi? Il mio lavoro quotidiano è scrivere piccoli script in stile .jar per aiutare i colleghi nei loro flussi di lavoro.

Attualmente installati sono: Java8u121 via SDKman e / Library / Java Folder, e Java9 via normale Oracle Install Tried rimuovendo gli altri, ma non sono sicuro se li ho puliti abbastanza bene.

Purtroppo non è possibile ripristinare l'intero sistema, è un laptop gestito dall'azienda e non so cosa succederà a tutti i sistemi connessi, soprattutto ActiveDirectory Sync.

Utilizzando MacOS Sierra 10.12.6, non è ancora possibile eseguire l'aggiornamento a High Sierra.

    
posta TheRealHypo 14.03.2018 - 16:37
fonte

1 risposta

0

Il /Library/Internet Plug-Ins/JavaAppletPlugin.plugin (il JRE) è quello che lancia il jar eseguibile anche se 'JarLauncher.app' - ed è quello installato da Oracle - ed è l'ultimo JDK installato.

Quindi se dici di avere JDK 9 da Oracle, come unico da Oracle, allora sarà JavaAppletPlugin.plugin di JDK 9 che dovrebbe essere usato in questo momento - che non funziona insieme a JDK 8 (su la scatola).

Una cosa che potresti provare è installare tutti i tuoi JDK da Oracle, e poi uno per uno salvare JavaAppletPlugin.plugin di ogni versione che vuoi usare in una cartella di scelta, da dove poi copi / sostituisci il plugin corrente in /Library/Internet Plug-Ins/ - magari crea un piccolo script Terminal, contenente l'impostazione JAVA_HOME e copia / override del plugin - esegui questo script appena prima di testare il tuo jar eseguibile.

Modifica

Dopo un po 'di riflessione, penso che devi prima fare un po' di pulizia.

Questo significa eliminare /Library/Internet Plug-Ins/JavaAppletPlugin.plugin e tutti i JDK in /Library/Java/JavaVirtualMachines/ .

Quindi scarica tutti i JDK necessari da Oracle e installali uno per uno, prima la versione più bassa e ricorda di eseguire il backup del /Library/Internet Plug-Ins/JavaAppletPlugin.plugin installato dopo ogni installazione in una cartella di scelta.

Ho salvato i miei plugin con i nomi:

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

Dovresti anche essere in grado di aprire il pannello di controllo java per ogni JDK installato, ma solo per quello che hai attualmente installato.

Ora puoi creare uno script che aggiorna il /Library/Internet Plug-Ins/JavaAppletPlugin.plugin - sotto c'è uno script veloce che ho fatto dove installa il plugin JRE 7_80 (sostituisci < PATH_TO_BACKUP_OF_PLUGINS > con il tuo percorso) - che anche è il pannello di controllo di Java, quindi dovresti essere in grado di aprirlo da Impostazioni.

#!/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"

Se vuoi uno script per ogni plug-in, o creerai uno script che accetta una versione, dipende da te.

JavaAppletPlugin.plugin e JAVA_HOME devono seguirsi l'un l'altro, forse hai già un modo per cambiare JAVA_HOME oggi.

Il modo in cui di solito imposto il mio JAVA_HOME è come di seguito, dove ho aggiunto alcune funzioni al mio .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
}
    
risposta data 14.03.2018 - 17:30
fonte

Leggi altre domande sui tag