Come posso impostare l'installazione/runtime Java predefinito (Windows)?
Mi trovo nella situazione in cui ho installato JDK, ma non riesco a eseguire applet nei browser (potrei non aver installato JRE).
Tuttavia, quando installo il JRE, blocca il mio JDK come runtime predefinito. Questo rompe praticamente tutto (Eclipse, Ant) - in quanto richiedono una JVM del server.
Non c'è nessuna variabile d'ambiente JAVA_HOME
in questi giorni - sembra solo usare qualche magia del registro (nemmeno l'impostazione del percorso di sistema è utile). In precedenza, ho appena disinstallato JRE dopo averlo usato per ripristinare il JDK. Questa volta voglio sistemarlo correttamente.
Questo si manifesta anche con il jre autoupdater - c'era una volta, avevo un setup funzionante con JDK e JRE, ma aggiornava e rompeva tutto.
6 answers
Questo è un po ' un dolore su Windows. Ecco cosa faccio.
Installa l'ultimo Sun JDK, ad esempio 6u11 , nel percorso come c:\install\jdk\sun\6u11
, quindi lascia che l'installatore installi public JRE nella posizione predefinita (c:\program files\blah
). Questo configurerà il tuo JRE predefinito per la maggior parte delle cose.
Installa JDK più vecchi se necessario, come 5u18 in c:\install\jdk\sun\5u18
, ma non installa i JRE pubblici.
Durante lo sviluppo, ho un piccolo file batch che uso per impostare un prompt dei comandi per ogni JDK versione. Essenzialmente basta impostare JAVA_HOME=c:\jdk\sun\JDK_DESIRED
e quindi impostare PATH=%JAVA_HOME%\bin;%PATH%
. Questo metterà il JDK desiderato per primo nel percorso e qualsiasi strumento secondario come Ant o Maven può usare la variabile JAVA_HOME
.
Il percorso è importante perché la maggior parte delle installazioni JRE pubbliche mette un eseguibile collegato a c:\WINDOWS\System32\java.exe
, che di solito sostituisce la maggior parte delle altre impostazioni.
Ho patchato il comportamento della mia scorciatoia di avvio di eclipse nella finestra di dialogo delle proprietà
Da
"E:\Program Files\eclipse\eclipse.exe"
Da A
"E:\Program Files\eclipse\eclipse.exe" -vm "E:\Program Files\Java\jdk1.6.0_30\bin"
Come descritto nella documentazione di Eclipse
È solo una patch, in quanto dipende dalla scorciatoia per correggere le cose...
L'alternativa è impostare il parametro in modo permanente nel file di inizializzazione di eclipse.
Ho appena avuto questo problema (Java 1.8 vs. Java 9 su Windows 7) e le mie scoperte sono:
Versione breve
Il valore predefinito sembra essere (a causa della voce del percorso)
c:\ProgramData\Oracle\Java\javapath\java -version
Seleziona la versione che desideri (prova, usa la scheda completando in cmd, non sei sicuro di cosa rappresentino quei numeri), avevo 2 opzioni, vedi la versione più lunga per i dettagli
c:\ProgramData\Oracle\Java\javapath_target_[tab]
Rimuovi junction / link e collega alla tua versione (quella che termina con 181743567 nel mio caso per Java 8)
rmdir javapath
mklink /D javapath javapath_target_181743567
Versione più lunga:
Reinstallare Java 1.8 dopo che Java 9 non ha funzionato. La sequenza di installazioni era jdk1.8.0_74, jdk-9.0.4 e tentativo di rendere Java 8 predefinito con jdk1.8. 0_162...
Dopo l'installazione di jdk1.8.0_162 Ho ancora
java -version
java version "9.0.4"
Java(TM) SE Runtime Environment (build 9.0.4+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)
Quello che vedo nel percorso è
Path=...;C:\ProgramData\Oracle\Java\javapath;...
Quindi ho controllato cos'è e ho trovato una giunzione (collegamento)
c:\ProgramData\Oracle\Java>dir
Volume in drive C is OSDisk
Volume Serial Number is DA2F-C2CC
Directory of c:\ProgramData\Oracle\Java
2018-02-07 17:06 <DIR> .
2018-02-07 17:06 <DIR> ..
2018-02-08 17:08 <DIR> .oracle_jre_usage
2017-08-22 11:04 <DIR> installcache
2018-02-08 17:08 <DIR> installcache_x64
2018-02-07 17:06 <JUNCTION> javapath [C:\ProgramData\Oracle\Java\javapath_target_185258831]
2018-02-07 17:06 <DIR> javapath_target_181743567
2018-02-07 17:06 <DIR> javapath_target_185258831
Quegli hash non suonano un campanello, ma quando controllato
c:\ProgramData\Oracle\Java\javapath_target_181743567>.\java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
c:\ProgramData\Oracle\Java\javapath_target_185258831>.\java -version
java version "9.0.4"
Java(TM) SE Runtime Environment (build 9.0.4+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)
Quindi per rendere Java 8 di nuovo predefinito ho dovuto eliminare il collegamento come descritto qui
rmdir javapath
E ricreare con Java che volevo
mklink /D javapath javapath_target_181743567
Testato:
c:\ProgramData\Oracle\Java>java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
** aggiornamento (Java 10) **
Con Java 10 è simile, solo javapath è in c:\Program Files (x86) \ Common Files \ Oracle \ Java \ che è strano come ho installato IMHO a 64 bit
.\java -version
java version "10.0.2" 2018-07-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.2+13)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.2+13, mixed mode)
Installo semplicemente tutte le versioni di JDK di cui ho bisogno e l'ultima installata diventa predefinita, quindi reinstallerò semplicemente quella che voglio essere predefinita se necessario.
Dopo molti tentativi, ho trovato l'approccio di giunzione più conveniente. Questo è molto simile a come questo problema è risolto in linux.
Fondamentalmente consiste nell'avere un collegamento tra c:\tools\java\default
e la versione effettiva di java che si desidera utilizzare come predefinito nel sistema.
Come impostarlo:
- Scarica junction e assicurati di inserirlo nel tuo PERCORSO variabile d'ambiente
- Imposta il tuo ambiente in questo modo:
-
PATH
che punta a SOLO a questo jrec:\tools\java\default\bin
-JAVA_HOME
che punta a `c:\tools\java\default - Memorizza tutti i tuoi jre-s in una cartella come (se lo fai nella tua cartella Programmi potresti incontrarne alcuni
C:\tools\Java\JRE_1.6
C:\tools\Java\JRE_1.7
C:\tools\Java\JRE_1.8
- Aprire un prompt dei comandi e cd su
C:\tools\Java\
- Esegui
junction default JRE_1.6
Questo creerà una giunzione (che è più o meno come un collegamento simbolico in linux) tra C:\tools\java\default
e C:\tools\java\JRE_1.6
In questo modo avrai sempre il tuo java predefinito in c:\tools\java\default
.
Se è necessario modificare il java predefinito nella versione 1.8, è sufficiente eseguire
junction -d default
junction default JRE_1.8
Quindi puoi avere file batch per farlo senza prompt dei comandi come
set_jdk8.bat
set_jdk7.bat
Come suggerito da @саџԁемаятіи
MODIFICA: da Windows vista, è possibile utilizzare mklink /J default JRE_1.8
Ho diversi JDK (1.4, 1.5, 1.6) installati in C:\Java
con i loro JRE. Quindi ho lasciato che Sun aggiornasse il JRE pubblico in C:\Program Files\Java
.
Ultimamente c'è un miglioramento, l'installazione in jre6. In precedenza, c'era una cartella diversa per nuova versione (1.5.0_4, 1.5.0_5, ecc.), che stava prendendo molto spazio