Windows ignora JAVA_HOME: come impostare JDK come predefinito?


89

Come convinco Windows a usare JDK invece di JRE?

Questa domanda è stata posta in passato, qui e altrove:

Come si imposta l'installazione / runtime Java predefinita (Windows)?

Il problema è che Windows ignora JAVA_HOMEe ignora anche il fatto che ho impostato la directory bin JDK come prima voce nel percorso.

Quando eseguo java -versiondalla riga di comando, invece di richiamare la mia installazione di JDK 1.6, esegue 1.7 JRE.

La mia ipotesi è che questo sia un problema specifico per 1.7 e Windows 7 sta facendo qualcosa che non dovrebbe con il registro.

Qualche idea su come risolvere questo problema?

Modifica : Oops. Ho scritto "prima voce nel classpath" sopra, quando intendevo "percorso". Scusate.

Risposte:


132

Su Windows, l' javaeseguibile utilizza il registro di Windows per individuare la versione predefinita di Java da eseguire.

La copia di java.exeda eseguire si trova utilizzando la PATHvariabile d'ambiente. A meno che tu non decida di cambiarlo, per impostazione predefinita verrà trovata una copia nella directory di Windows. Poiché questa copia non si trova in una directory di runtime Java, ne individua una esaminando il registro.

Quindi, devi modificare il registro o inserire la versione di Java che desideri prima della directory di Windows nel tuo file PATH.


11
OP qui. Vedi la mia modifica sopra. Sì, questo l'ha risolto. Due note: in primo luogo, sembra che il programma di installazione di Java abbia davvero inserito java.exe in Windows \ System32. Questo è sbalorditivo per me. In secondo luogo, quando si modifica il percorso in Computer / Proprietà / Impostazioni di sistema avanzate / Variabili d'ambiente, è necessario modificare il percorso di sistema , non il percorso utente . Il percorso di sistema si pone al primo posto.
ccleve

2
Sottolineerò anche il punto di user237815 secondo cui sembra che il programma di installazione di Java rilascia effettivamente il suo java.exe in Windows \ System32. Questo certamente non è stato intuitivo per me. Solo dopo aver controllato "java -version" da una console ho ottenuto un certo livello di comfort che Windows ora stava usando java.exe che volevo dalla mia installazione JDK piuttosto che una versione precedente e indesiderata.
John Tobler

17
Il problema è stato risolto anche nel mio caso rinominando java.exe, javaw.exe e javaws.exe nella mia cartella Windows / System32. Quindi, e solo allora, java -version mostra la versione impostata in JAVA_HOME e il PERCORSO
Inversus,

6
Mi hai salvato la giornata! Spostando la voce relativa al JDK prima che Windows in PATH risolvesse il problema. Grazie mille!
the_dark_destructor

9
Metto %JAVA_HOME%\binin prima posizione pathvariabile su Windows 10 e lavoro su di me.
Wendel

30

In Windows 8, potresti voler rimuovere la C:\ProgramData\Oracle\Java\javapath directory.

dal percorso

Ha risolto il mio problema.


5
In Windows 10, è: C: \ Program Files (x86) \ Common Files \ Oracle \ Java \ javapath. Questo viene automaticamente aggiunto alla variabile System Path. Elimina quell'ans e imposta la posizione del percorso personalizzato.
Dexter

1
il commento sopra ha aiutato in caso di Windows 10
Saba Ahang il

23

Anche io ho questo problema. Sto eseguendo la 1.6 ma voglio creare il codice su cui sto lavorando con la 1.5. Ho cambiato JAVA_HOMEe PATH(sia utente che sistema) senza alcun risultato.

La risposta è che l'installatore per 1.6 è sceso java.exe, javaw.exee javaws.exenella mia Windows\System32cartella (Windows 7).

Ho risolto rinominando tali file java_wrong.exe, javaw_wrong.exee javaws_wrong.exe. Solo dopo averlo fatto, prende la versione corretta di java come definita in JAVA_HOMEe PATH. Ho rinominato i file in questo modo perché li ha cancellati in modo facilmente reversibile.

Spero che sia di aiuto!


10
Invece di rinominare, potresti modificare la variabile PATH specificando come primo valore% JAVA_HOME% \ bin, in questo modo sarebbe il primo valore che assumerà
maxivis

1
@maxivis Thanks. Immagino che il problema potrebbe essere stato l'ordine degli elementi PATH in modo tale che Windows \ System32 fosse prima di JAVA_HOME. Li ho semplicemente rinominati in modo che fossero effettivamente eliminati in modo reversibile.
Inversus

In qualche modo l'impostazione di JAVA_HOME nel percorso non funzionava in alcun modo per me, questo in realtà lo ha risolto.
Guilherme Orioli

12

Windows non ignora nulla. Questo è un problema con la tua configurazione; Windows utilizza solo ciò che fornisci. Non ha alcuna conoscenza speciale di JAVA_HOME.

CLASSPATHnon ha niente a che fare con Windows, neanche. Per Windows è solo una variabile ambientale che viene espansa in una posizione di cartella.

Controlla la tua %PATH%variabile ambientale. È ciò che fa sì che Windows trovi l'uno prima dell'altro. Il percorso (come ha detto il post a cui ti sei collegato) dovrebbe puntare %JAVA_HOME%\bin;<remainder of path>. Ancora una volta, il post a cui ti sei collegato ti ha dato un modo per impostarlo utilizzando un file batch.

(Per gli altri che potrebbero non saperlo: il modo più semplice per ispezionare% PATH% è aprire un prompt dei comandi e digitare echo %PATH%. Puoi anche accedervi facendo clic con il pulsante destro del mouse su Computernel riquadro destro del menu Start e scegliendo Properties, quindi Advanced System Settings, e il Environmental Variablespulsante tne .)


@erickson: OK. Grazie, lo correggerò. Tuttavia, non ha ancora nulla a che fare con Windows, che era il punto della mia risposta. :)
Ken White

Capito, ero solo preoccupato che si potesse creare un nuovo malinteso; Java non ne sa niente di più JAVA_HOMErispetto a Windows.
erickson

Apprezzo la correzione. Io stesso non sono una persona Java (esperienza limitata fino ad oggi), quindi è bene saperlo per riferimento futuro.
Ken White il

1
JAVA_HOMEdovrebbe essere impostato sulla radice dell'installazione java. Il percorso dovrebbe avere %JAVA_HOME%\bin;&lt;remainder of path%gt;, altrimenti finirai per non "trovare" java, javac, ecc. Ovviamente Windows guarda solo la PATHvariabile, ma alcuni strumenti relativi a java guardano JAVA_HOMEoccasionalmente.
Edwin Buck

@Edwin: risolto anche il problema mancante \bin. Grazie.
Ken White

6

Ho avuto lo stesso problema. Ho installato un sacco di versioni di Java e per qualche motivo è stato utilizzato Java 1.7 al posto di Java 1.6, anche se nel percorso ho specificato di utilizzare 1.6 (C: \ jdk1.6.0_45_32 \ bin).

Ho dovuto spostare il percorso del JDK che volevo usare (1.6) per essere la prima voce nella variabile d'ambiente PATH per assicurarmi che Windows usasse 1.6 invece di 1.7.

Quindi, ad esempio, la variabile d'ambiente PATH prima era:

C:\Program Files (x86);...<other entries>;C:\dev\ant181\bin;C:\jdk1.6.0_45_32\bin

e dopo aver spostato il jdk per primo, ha funzionato:

C:\jdk1.6.0_45_32\bin;C:\Program Files (x86);...<other entries>;C:\dev\ant181\bin

Immagino che il programma di installazione di Windows di Java 1.7 lo abbia installato in qualche altra directory già nel PERCORSO, venendo quindi utilizzato per primo invece della voce PATH personalizzata specificata C: \ jdk1.6.0_45_32 \ bin;


grazie Fratello. Spostare il percorso JAVA_HOME \ bin come primo elemento della variabile Path mi ha salvato la vita.
ÖMER TAŞCI

4

Per il mio caso in 'Path'variabile è stato aggiunto un parametro come " C:\ProgramData\Oracle\Java\javapath;". Questa posizione stava avendo java.exe, javaw.exee javaws.exeda java 8 che è stato recentemente installato tramite jdk.exeOracle.

Ho rimosso questo testo da Path dove il mio Path lo aveva già %JAVA_HOME%\bin.

Ora, la variabile 'JAVA_HOME'controlla la mia versione di Java che volevo.


4

inserisci qui la descrizione dell'immagineSupponiamo di aver installato JDK 10 dopo JDK 8 e nel percorso di impostazione della variabile di ambiente di sistema come "C: \ ProgramData \ Oracle \ Java \ javapath" quindi il controllo della versione Java tramite questo percorso. ignorerà JAVA_HOME anche il percorso jdk 1.8 impostato qui Quindi rimuovi "C: \ ProgramData \ Oracle \ Java \ javapath" nel percorso per ottenere l'effetto del percorso JAVA_HOME


2

Avevo Java 7 e 8 installati e voglio reindirizzare a java 7 ma la versione java nella finestra del prompt di cmd mostra Java 8.
Aggiunto il percorso della directory bin di Java 7 ( C: \ Program Files \ Java \ jdk1.7.0_10 \ bin ) alla variabile PATH alla fine, ma non ha funzionato e mostra Java 8. Quindi ho cambiato il percorso di Java 7 all'inizio del valore del percorso e ha funzionato.
Ho aperto una nuova finestra del prompt di cmd e ho controllato la mia versione di java e ora mostra Java 7


1

Imposta la variabile d'ambiente Path sulla directory jdk / bin desiderata


1

Nel mio caso avevo Java 7 e 8 (entrambi x64) installati e voglio reindirizzare a java 7 ma tutto è impostato per utilizzare Java 8. Java utilizza la variabile d'ambiente PATH:

C: \ ProgramData \ Oracle \ Java \ javapath

come prima opzione per cercare la sua cartella runtime (è una cartella nascosta). Questo percorso contiene 3 collegamenti simbolici che non possono essere modificati.

Nel mio pc, la variabile d'ambiente PATH ha questo aspetto:

C: \ ProgramData \ Oracle \ Java \ javapath; C: \ Windows \ System32; C: \ Program Files \ Java \ jdk1.7.0_21 \ bin;

Nel mio caso, dovrebbe assomigliare a questo:

C: \ Windows \ System32; C: \ Program Files \ Java \ jdk1.7.0_21 \ bin;

Ho dovuto tagliare e incollare i collegamenti simbolici da qualche altra parte in modo che java non possa trovarli e posso ripristinarli in seguito.

Dopo aver impostato le variabili di ambiente JAVA_HOME e JRE_HOME sui runtime delle cartelle java desiderate (nel mio caso è Java 7), il comando java -versiondovrebbe mostrare il runtime java desiderato. Osservo che non c'è bisogno di fare confusione con il registro.

Testato su Win7 x64.


1

Questo problema è probabilmente dovuto alle versioni precedenti di Java installate nel tuo sistema. Per prima cosa controlla attentamente le tue variabili d'ambiente e rimuovi tutte le variabili d'ambiente relative alle versioni precedenti di JAVA e sostituisci quei percorsi a

C:\Program Files\Java\<your new jdk version>\bin

0

C'è un fattore aggiuntivo qui; oltre agli eseguibili java che l'installazione java mette ovunque tu chieda di metterli, su Windows, il programma di installazione java mette anche copie di alcuni di quegli eseguibili nella tua directory system32 di Windows, quindi probabilmente utilizzerai quale era ogni eseguibile java installato più di recente.


0

Nel caso in cui si utilizzi il file .BAT come servizio Windows, suggerirei di disinstallare il servizio Windows e reinstallarlo nuovamente dopo aver modificato% JAVA_HOME% in modo che punti alla versione Java corretta ..


0

Dopo aver lottato con questo problema per un po 'di tempo e aver fatto ricerche al riguardo, sono finalmente riuscito a risolverlo seguendo questi passaggi:

1) installa jdk versione 12
2) Crea una nuova variabile nella variabile di sistema
3) Chiamala JAVA_HOME e dai il percorso di installazione jdk
4) aggiungi questa variabile nel percorso e spostala in alto.
5) vai a C: \ Programmi (86) \ Common Files \ Oracle \ Java \ javapath e sostituisci java.exe e javaw.exe con i file corrispondenti con gli stessi nomi dalla cartella pathtojavajdk / bin

Infine, ho controllato la versione predefinita di java in cmd con "java -version" e ha funzionato!

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.