Come posso modificare la Java VM predefinita di Mac OS restituita da / usr / libexec / java_home


108

(Non ero sicuro se questo dovesse andare su SU ... la migrazione è certamente un'opzione, ma più programmatori leggono le domande qui, quindi ecco qui).

Utilizzo Mac OS X 10.8.4 e ho installato JDK 1.6.0_51 di Apple e JDK 1.7.0_25 di Oracle. Recentemente ho installato l'anteprima di Oracle 1.8 JDK per alcuni software pre-release che lo richiedono. Ora, quando eseguo / usr / libexec / java_home, ottengo questo:

$ /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

Grande.

Tuttavia, in esecuzione:

$ java -version

Ritorna:

java version "1.8.0-ea"

Ciò significa che la versione predefinita di Java è attualmente la versione pre-rilascio, che interrompe alcuni pacchetti "normali" (nel mio caso, VisualVM).

Non riesco a impostare JAVA_HOMEperché l'avvio delle applicazioni ignora le variabili di ambiente, anche quando si avvia dalla riga di comando (ad esempio $ open /Applications/VisualVM.app).

Quindi, esiste un file che posso modificare in cui posso impostare le mie preferenze di ordinamento JVM a livello globale ?

(Per favore, non dirmi di avviare il pannello delle preferenze di Java perché semplicemente non funziona: non contiene nulla di utile ed elenca solo una delle 4 JVM che ho installato.)

Aggiornamento :

Le JVM Oracle vivono in /Library/Java/JavaVirtualMachines. Rinominare la directory JDK 1.8 in jdk1.8.0.jvm.xyznon cambia nulla: la java_hometrova ancora nel posto giusto e l'esecuzione di / usr / bin / java esegue ancora la JVM 1.8. Questo non è un problema con i collegamenti di sincronizzazione, ecc.

Risposte a domande simili

Sebbene questa risposta offra ciò che equivale a un hack che rimuoverà le versioni di Java dall'essere raccolte da java_home, non risponde ancora a questa domanda su come java_home sceglie il suo valore predefinito e se gli utenti possono impostarlo in modo non distruttivo .


Digita "which java" e segui le breadcrumb. /usr/bin/javaè solo un collegamento simbolico
Brian Roach

11
Ci sono stato, l'ho fatto. /usr/bin/javapunta a /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java. La Versionsdirectory non contiene un collegamento simbolico al JDK 1.8.0. Invece, contiene una directory chiamata utilmente a Acui Currentpunta. Anon è un "JAVA_HOME. Ha una sottodirectory chiamata Commandsche ha un javacomando, ma è un binario universale opaco che fa chissà cosa. Sospetto che usi java_home, ecc. per decidere quale JVM usare.
Christopher Schultz

2
Se questo è fuori tema, esegui la migrazione invece di chiudere. FWIW, si tratta di "strumenti software comunemente usati dai programmatori", quindi chiudere "fuori tema" è falso.
Christopher Schultz

Sì, questo è frustrante! Voglio solo un JDK per tutti, o forse 2 che posso passare facilmente da 1.7 a 1.8.
Brian

1
Ho trovato questo SO risposta utile per questa domanda: stackoverflow.com/a/44169445/2987755
DKB

Risposte:


89

Penso che JAVA_HOMEsia il meglio che puoi fare. Gli strumenti della riga di comando apprezzano javae javacrispetteranno quella variabile d'ambiente, che puoi utilizzare /usr/libexec/java_home -v '1.7*'per darti un valore adatto da inserire per fare in JAVA_HOMEmodo che gli strumenti della riga di comando utilizzino Java 7.

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

Ma i bundle di applicazioni standard con doppio clic non utilizzano affatto JDK installati /Library/Java. I .appbundle vecchio stile che utilizzano Apple JavaApplicationStubuseranno Apple Java 6 da /System/Library/Frameworks, e quelli di nuovo stile creati con AppBundler senza un JRE in bundle useranno il JRE "pubblico" in /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home- che è hard-coded nel codice stub e non può essere modificato, e non è possibile avere due diversi JRE pubblici installati contemporaneamente.


Modifica: ho dato un'occhiata a VisualVM in particolare, supponendo che tu stia utilizzando la versione "bundle dell'applicazione" dalla pagina di download e questa particolare app non è un'applicazione AppBundler, invece il suo eseguibile principale è uno script di shell che chiama un numero di altri script di shell e legge vari file di configurazione. Per impostazione predefinita, seleziona il JDK più recente a partire /Library/Javada 7u10 o versioni successive oppure utilizza Java 6 se l'installazione di Java 7 è l'aggiornamento 9 o precedente. Ma svelando la logica negli script della shell mi sembra che tu possa specificare un particolare JDK usando un file di configurazione.

Crea un file di testo ~/Library/Application Support/VisualVM/1.3.6/etc/visualvm.conf(sostituisci 1.3.6 con qualsiasi versione di VisualVM stai utilizzando) contenente la riga

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

e questo lo costringerà a scegliere Java 7 invece di 8.


Questo non sembra essere il caso del mio sistema. L'avvio di VisualVM prima dell'installazione di JDK 1.8 ha funzionato. Dopo JDK1.8, VisualVM mostra la schermata iniziale, quindi muore. Lo spostamento della directory JDK1.8 da / Library / Java ne ripristina la capacità di esecuzione.
Christopher Schultz

@ChristopherSchultz Ho dato un'occhiata al bundle VisualVM e ho scoperto che non è una normale applicazione appbundler. Vedere la mia modifica per una possibile soluzione alternativa.
Ian Roberts

Scusa, ho scritto il mio commento precedente prima della tua modifica. Controllerò l'esecuzione di VisualVM utilizzando quella tecnica, ma è improbabile che sia universalmente applicabile. Ho un sacco di altri software basati su Java che eseguo come Eclipse, JasperReports iReport, ecc. Che potrebbero essere tutti influenzati da questo. Penso che preferirei spostare la directory JDK1.8 da qualche altra parte e utilizzarla esplicitamente con JAVA_HOME per le (poche) volte in cui ne ho effettivamente bisogno.
Christopher Schultz

1
Sì, hai ragione, JAVA_HOMEè la strada da percorrere e in generale la soluzione migliore è specificare la versione minore di cui hai bisogno in altri casi. Sulla base di smontaggio, si scopre che si può export JAVA_VERSION=1.7fare java_homedi default a mostrare JKD7 invece di JDK8, ma che si rompe java_home -v 1.6perché java-homel'interpreta come un ulteriore vincolo e dà fino a causa di vincoli reciprocamente insoddisfacibile, poi va solo con il default 1.8 anche con l' --failfastopzione.
andrewdotn

2
Non riesco a capire perché il pannello di controllo Java delle preferenze di sistema non presenti solo un elenco da cui selezionare, piuttosto che dover ricorrere a script / comandi della shell. Sospetto che questo sia solo per le applet che vengono eseguite nel browser ...
JGFMK

51

Ci sono stato anch'io e ho cercato ovunque come /usr/libexec/java_homefunziona, ma non sono riuscito a trovare alcuna informazione su come determina le Java Virtual Machine disponibili che elenca.

Ho sperimentato un po 'e penso che esegua semplicemente un ls /Library/Java/JavaVirtualMachinese poi controlli ./<version>/Contents/Info.plisttutti i runtime che trova lì.

Quindi li ordina in modo decrescente in base alla chiave JVMVersioncontenuta in Info.plist e per impostazione predefinita utilizza la prima voce come JVM predefinita.

Penso che l'unica cosa che potremmo fare è cambiare il plist: sudo vi /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Info.pliste quindi modificare la JVMVersion da 1.8.0a qualcos'altro che lo faccia ordinare in basso anziché in alto, come !1.8.0.

Qualcosa di simile a:

<?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' -->`

e poi scompare magicamente dalla cima dell'elenco:

/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

Ora dovrai disconnetterti / accedere e quindi:

java -version
java version "1.7.0_45"

:-)

Ovviamente non ho idea se qualcos'altro si rompe ora o se la versione 1.8.0-ea di java funziona ancora correttamente.

Probabilmente non dovresti fare nulla di tutto ciò, ma devi semplicemente disinstallare 1.8.0.

Tuttavia finora questo ha funzionato per me.


Questo ha funzionato per me. Ho dovuto usare questo tweak per mantenere il plug-in Idea Sbt funzionante per me su MacOS. Lo sto menzionando sul mio blog agilebuild.blogspot.com/2014/02/…
antoine

Funziona ma sembra un po 'complicato e potrebbe non sembrare una procedura operativa standard. Mi chiedo se c'è un approccio migliore.
Weibo Li

Vorrei ancora una soluzione per questo, ma per impostare il JDK per Intellij da utilizzare l'ho aggiunto al mio zshenv: export IDEA_JDK = /usr/libexec/java_home -v 1.7. Penso che farò lo stesso per JAVA_HOME ...
David Resnick

Riesco a utilizzare questa risposta per evitare di utilizzare Java 9 per avviare applicazioni a doppio clic (a causa di un problema in Keystore Store explorer). Grazie!
Nicolas Henneaux

2
Un estratto dall'installazione di JDK e JRE su macOS : Dopo aver installato Java per macOS 2012-006, /usr/bin/javatroverà il JDK più recente installato e lo utilizzerà per tutti gli strumenti della riga di comando relativi a Java in /usr/bin.
Jeremy Kao

7

In realtà è abbastanza facile. Diciamo che abbiamo questo nella nostra cartella JavaVirtualMachines:

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

Immagina che 1.8 sia il nostro valore predefinito, quindi aggiungiamo semplicemente una nuova cartella (ad esempio "vecchia") e spostiamo la cartella jdk predefinita in quella nuova cartella. Fallo di java -versionnuovo et voilà, 1.7!


1
Incredibile, ma ha funzionato ... Grazie Mac OS Mojave
Michał Dobi Dobrzański

5

È piuttosto semplice, se non ti dispiace rimboccarti le maniche ... / Library / Java / Home è l'impostazione predefinita per JAVA_HOME, ed è solo un collegamento che punta a uno di:

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

Quindi volevo cambiare la mia versione JVM / JDK predefinita senza modificare il contenuto di JAVA_HOME ... / Library / Java / Home è la posizione standard per l'attuale JVM / JDK ed è quello che volevo preservare ... mi sembra essere il modo più semplice per cambiare le cose con il minor numero di effetti collaterali.

In realtà è molto semplice. Per cambiare la versione di java che vedi con java -version, tutto ciò che devi fare è una versione di questo:

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

Non mi sono preso il tempo ma uno script di shell molto semplice che utilizza / usr / libexec / java_home e ln per riproporre il collegamento simbolico sopra dovrebbe essere stupido e facile da creare ...

Dopo aver cambiato dove è puntato / Library / Java / Home ... ottieni il risultato corretto:

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)

1
Non è così che funziona questa roba: /Library/Java/Homeè davvero un collegamento simbolico, ma indica il /System/Library/Frameworks/JavaVM.framework/Homequale si trova in un grande miscuglio di collegamenti simbolici che alla fine ti porta a ... un comando magico che determina il JRE giusto da avviare. Nota che /usr/libexec/java_homesi collega anche a questa magia. Quindi, puoi interrompere tutto semplicemente sostituendo i collegamenti simbolici e puntando a un singolo JRE, ma dovrai aggiornarlo ogni volta. Evidentemente non esiste un comando simile set_preferred_jvm_versiono qualcosa di simile.
Christopher Schultz

1
Il vantaggio di questa tecnica, tuttavia, è che non richiede l'impostazione da JAVA_HOMEnessuna parte. Giocherò con questa tecnica per vedere se si tradurrà in programmi basati su Java che si avviano con la Java VM "preferita". Sospetto che lo farà, ma è piuttosto fragile.
Christopher Schultz

Ebbene in questi giorni ho solo questo in .bash_profile:export JAVA_HOME=`/usr/libexec/java_home -v 12`
jrypkahauer

Questo non funziona per fare doppio clic su un'icona, che era un po 'il punto. Le soluzioni che funzionano solo dalla riga di comando ... non sono soluzioni.
Christopher Schultz,

3

Le istruzioni di disinstallazione di Oracle per Java 7 hanno funzionato per me.

Estratto:

Disinstallazione di JDK Per disinstallare JDK, è necessario disporre dei privilegi di amministratore ed eseguire il comando di rimozione come root o utilizzando lo strumento sudo (8).

Passare a / Library / Java / JavaVirtualMachines e rimuovere la directory il cui nome corrisponde al seguente formato: *

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

Ad esempio, per disinstallare 7u6:

% rm -rf jdk1.7.0_06.jdk


2
Questa domanda non riguardava la disinstallazione ... si trattava di scegliere la JVM "primaria" tra quelle installate ...
Christopher Schultz

3

Un po 'in ritardo ma poiché questo è un problema in corso con Mac OSX ...

La soluzione più semplice che ho trovato è stata semplicemente rimuovere il materiale OpenJDK che Apple installa. Ogni volta che arriva un aggiornamento di Mac OSX, viene installato e dovrai rimuoverlo di nuovo.

Funziona molto bene se sviluppi app per Google App Engine sul tuo Mac utilizzando Java. OpenJDK non funziona bene e la versione Java fornita con l'aggiornamento di Mac OSX Yosemite farà sì che il plug-in Eclipse per App Engine si arresti in modo anomalo a ogni distribuzione con l'utile errore: "Lettura scaduta".


1
Divertente ... pensavo che Apple avesse rimosso completamente Java a questo punto. Non ricordo di aver rimosso manualmente la JVM Java 1.6 di Apple e sicuramente non è più qui. In ogni caso, questo non risolve davvero il problema originale che era quello di specificare la JVM preferita data una selezione che è stata installata.
Christopher Schultz

Hai ragione. Non risponde alla domanda. Risponde a questo: se rimuovi la JVM in uso, viene utilizzata quella "successiva" nell'elenco. Forse questo aiuta.
Mo'in Creemers

questo spiega perché dopo aver eseguito un'installazione jdk 8, non viene visualizzato nella cartella JavaVirtualMachines? Tutto quello che vedo è "1.6.0.jdk" indipendentemente dalla versione che installo.
whyoz

@whyoz Ho appena installato jdk-8u31-macosx-x64 su osx 10.10.2 e la VM è stata installata nella cartella JavaVirtualMachines come previsto.
Mo'in Creemers

Stai utilizzando Parallels per caso? L'ho installato sul lato Windows di Parallels e 8u31 installato come previsto ... ma non sul lato Mac ..
whyoz

3

Ho provato "jenv" e altre cose come l'impostazione di "JAVA_HOME" senza successo. Ora io e finiamo con la seguente soluzione

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
}

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

E chiamando così:

setJava 1.8

java_home gestirà l'input sbagliato. quindi non puoi fare qualcosa di sbagliato. Maven e altre cose prenderanno la versione giusta ora.


1

In realtà l'ho guardato un po 'nel disassembler, poiché la fonte non è disponibile.

/ usr / bin / java e / usr / libexec / java_home utilizzano entrambi JavaLaunching.framework. La variabile d'ambiente JAVA_HOME viene effettivamente controllata per prima da / usr / bin / java e amici (ma non / usr / libexec / java_home.) Il framework utilizza le variabili d'ambiente JAVA_VERSION e JAVA_ARCH per filtrare le JVM disponibili. Quindi, per impostazione predefinita:

$ /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

Ma l'impostazione, ad esempio, JAVA_VERSION può sovrascrivere l'impostazione predefinita:

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

È anche possibile impostare JAVA_LAUNCHER_VERBOSE = 1 per vedere alcuni log di debug aggiuntivi per quanto riguarda i percorsi di ricerca, le JVM trovate, ecc., Sia con / usr / bin / java che con / usr / libexec / java_home.

In passato, JavaLaunching.framework utilizzava effettivamente il sistema delle preferenze (nel dominio com.apple.java.JavaPreferences) per impostare l'ordine JVM preferito, consentendo di impostare la JVM predefinita con PlistBuddy , ma per quanto ne so, che il codice è stato rimosso nelle versioni recenti di macOS. Le variabili di ambiente sembrano essere l'unico modo (a parte la modifica di Info.plist nei bundle JDK stessi.)

L'impostazione delle variabili di ambiente predefinite può ovviamente essere eseguita tramite il proprio .profile o tramite launchd , se è necessario impostarle a livello di sessione.


Questa è un'ottima informazione, Dan. L'utilizzo .profilenon è utile per il mio caso d'uso (avvio di un'applicazione da es. Launchpad) ma il suggerimento launchdè buono. Dovrò fare un tentativo, poiché la recente follia di versioni di Java significa che ho diverse generazioni di Java installate contemporaneamente, con diversi livelli di fiducia (personale).
Christopher Schultz

-2

Modifica: questa informazione è specifica per visualvm, non per qualsiasi altra app java

Come accennato da altri, è necessario modificare il visualvm.conf

Per l'ultima versione di JvisualVM 1.3.6 su Mac, le directory di installazione sono cambiate.

È attualmente in /Applications/VisualVM.app/Contents/Resources/visualvm/etc/visualvm.conf .

Tuttavia ciò può dipendere da dove hai installato VisualVM. Il modo più semplice per trovare dove è il tuo VisualVM per avviarlo e quindi guardare il processo usando:

ps -ef | grep VisualVM

Vedrai qualcosa come:

... -Dnetbeans.dirs = / Applicazioni / VisualVM.app / Contents / Resources / visualvm / visualvm ...

Vuoi prendere la proprietà netbeans.dir e cercare una directory e troverai la cartella ecc.

Rimuovere il commento da questa riga nel visualvm.conf e modificare il percorso in jdk

visualvm_jdkhome="/path/to/jdk"

Inoltre, se stai riscontrando lentezza con il tuo visualvm e hai molta memoria, suggerirei di aumentare notevolmente la quantità di memoria disponibile e di eseguirlo in modalità server:

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"

Cattivo consiglio: la modifica dello script di avvio per una particolare applicazione probabilmente interromperà l'applicazione e non risolverà il problema originale di cambiare la JVM predefinita per il sistema operativo.
Christopher Schultz

Sfortunatamente, come menzionato da altri, jvisualvm non utilizza metodi standard per la scelta di una jvm. Questa è l'unica soluzione per questa app.
Celandro

Come dichiaro nella mia risposta non è necessario modificare nulla all'interno del bundle dell'applicazione stessa, l'app può caricare la sua configurazione da ~/Library/Application Support/VisualVM/1.3.6/etc/visualvm.conf.
Ian Roberts

-2

Ho avuto una situazione simile e il seguente processo ha funzionato per me:

  1. Nel terminale, digita

    vi ~/.profile
  2. Quindi aggiungi questa riga nel file e salva

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

    dove la versione è quella sul tuo computer, ad esempio 1.7.0_25

  3. Esci dall'editor, quindi digita il seguente comando per renderlo effettivo

    source ~/.profile 

Quindi digita java -version per controllare il risultato

    java -version 

Cos'è .profile? Da: http://computers.tutsplus.com/tutorials/speed-up-your-terminal-workflow-with-command-aliases-and-profile--mac-30515

Il file .profile è un file nascosto. È un file opzionale che dice al sistema quali comandi eseguire quando l'utente il cui file di profilo è connesso. Ad esempio, se il mio nome utente è bruno e c'è un file .profile in / Users / bruno /, tutto il suo contenuto verrà eseguito durante la procedura di login.


Questo non funzionerà quando si avvia VisualVM da Launchpad. L'avvio dalla riga di comando non è mai un problema, poiché puoi impostare la variabile d'ambiente JAVA_HOME.
Christopher Schultz

-2

MacOS utilizza / usr / libexec / java_home per trovare la versione Java corrente. Un modo per aggirare è modificare il file plist come spiegato da @ void256 sopra. Un altro modo è prendere il backup di java_home e sostituirlo con il tuo script java_home con il codice
echo $ JAVA_HOME

Ora esporta JAVA_HOME nella versione desiderata dell'SDK aggiungendo i seguenti comandi a ~ / .bash_profile. export JAVA_HOME = "/ System / Library / Java / JavaVirtualMachines / 1.6.0.jdk / Contents / Home" launchctl setenv JAVA_HOME $ JAVA_HOME /// Rendi globale la variabile d'ambiente

Esegui il comando source ~ / .bash_profile per eseguire i comandi precedenti.

Ogni volta che è necessario modificare JAVA_HOME, è possibile reimpostare il valore JAVA_HOME nel file ~ / .bash_profile.


Tutto ciò che si basa sulle variabili di ambiente non funzionerà. Il punto è che le applicazioni avviate tramite LaunchPad, ecc. Non avranno quella configurazione ambientale. Il plist hack sopra sembra il "migliore" in quanto raggiunge effettivamente il risultato desiderato. Non sono ancora sicuro di eventuali svantaggi. Vedi la risposta di @Tony che ha lo stesso problema.
Christopher Schultz

-3

Volevo cambiare la versione predefinita di java da 1.6 * a 1.7 *. Ho provato i seguenti passaggi e ha funzionato per me:

  • Rimosso il collegamento "java" da / usr / bin
  • Creato di nuovo, indicando la nuova posizione:

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

  • verificato con "java -version"

versione java "1.7.0_51"
Java (TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot (TM) Server VM a 64 bit (build 24.51-b03, modalità mista)


Non risponde alla domanda: non influenzerà il comportamento di /usr/libexec/java_home.
Christopher Schultz
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.