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.

Author: MarianD, 2009-02-16

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.

 39
Author: nbeyer, 2014-08-07 22:24:40

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.

 6
Author: Jörn Guy Süß, 2012-01-16 02:21:38

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)
 2
Author: Betlista, 2018-09-08 16:39:55

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.

 1
Author: John Mikic, 2018-01-25 17:05:17

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:

  1. Scarica junction e assicurati di inserirlo nel tuo PERCORSO variabile d'ambiente
  2. Imposta il tuo ambiente in questo modo: - PATH che punta a SOLO a questo jre c:\tools\java\default\bin - JAVA_HOME che punta a `c:\tools\java\default
  3. 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
  4. Aprire un prompt dei comandi e cd su C:\tools\Java\
  5. 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

 0
Author: snovelli, 2016-03-24 11:19:43

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

 0
Author: PhiLho, 2018-09-07 12:02:49