Dobbiamo fare una distinzione tra le due variabili d'ambiente che sono discusse qui in modo intercambiabile. Uno è la variabile JAVA_HOME . L'altra è la variabile Path . Qualsiasi processo che fa riferimento alla variabile JAVA_HOME sta cercando il percorso di ricerca su JDK, non su JRE. L'uso della variabile JAVA_HOME non è destinato al compilatore Java stesso. Il compilatore è a conoscenza della propria posizione. La variabile è destinata ad altri software per individuare più facilmente il compilatore. Questa variabile viene in genere utilizzata dal software IDE per compilare e creare applicazioni dal codice sorgente Java. Al contrario, l'interprete CMD di Windows e molti altri software di prime e terze parti fanno riferimento alla variabile Path, non alla variabile JAVA_HOME.
Caso d'uso 1: compilazione da CMD
Quindi, ad esempio, se non si utilizza alcun software IDE e si desidera solo essere in grado di compilare dal CMD, indipendentemente dalla directory di lavoro corrente, ciò che si desidera è impostare correttamente la variabile Path. Nel tuo caso, non hai nemmeno bisogno della variabile JAVA_HOME. Poiché CMD utilizza Path, non JAVA_HOME per individuare il compilatore Java.
Caso d'uso 2: compilazione da IDE
Tuttavia, se si sta utilizzando alcuni software IDE, allora si deve guardare la documentazione prima di tutto. Potrebbe essere necessario impostare JAVA_HOME, ma potrebbe anche utilizzare un altro nome di variabile per lo stesso scopo. Lo standard di fatto nel corso degli anni è stato JAVA_HOME, ma potrebbe non essere sempre così.
Caso d'uso 3: compilazione da IDE e CMD
Se oltre al software IDE vuoi anche essere in grado di compilare dal CMD, indipendentemente dalla tua directory di lavoro corrente, allora oltre alla variabile JAVA_HOME potresti anche dover aggiungere il percorso di ricerca JDK alla variabile Path.
JAVA_HOME vs. Path
Se il tuo problema riguarda la compilazione di Java, allora vuoi controllare la variabile JAVA_HOME e Path (dove applicabile). Se il tuo problema riguarda l'esecuzione di applicazioni Java, allora vuoi controllare la tua variabile Path.
La variabile percorso è utilizzata universalmente in tutti i sistemi operativi. Poiché è definito dal sistema e poiché è la variabile predefinita utilizzata per individuare JRE, non si verificano quasi mai problemi con le applicazioni Java. Soprattutto su Windows, dove gli installatori di software di solito impostano tutto per te. Ma se stai installando manualmente, la cosa più sicura da fare è forse saltare del tutto la variabile JAVA_HOME e usare semplicemente la variabile Path per tutto, sia per JDK che per JRE. Qualsiasi versione recente di un software IDE dovrebbe essere in grado di rilevarlo e utilizzarlo.
link simbolici
I collegamenti simbolici possono fornire ancora un altro modo per fare riferimento al percorso di ricerca JDK eseguendo il piggyback di una delle variabili di ambiente esistenti.
Non sono sicuro delle versioni precedenti delle versioni Oracle / Sun JDK / JRE, ma almeno il programma di installazione per jdk1.8.0_74 aggiunge il percorso di ricerca C:\ProgramData\Oracle\Java\javapath
alla variabile Path e lo inserisce all'inizio del valore della stringa. Questa directory contiene collegamenti simbolici a java.exe, javaw.exe e javaws.exe nella directory JRE.
Quindi almeno con Java 8 JDK e presumibilmente Java 8 JRE autonomo, non è necessario eseguire alcuna configurazione di variabile d'ambiente per JRE. Finché si utilizza il pacchetto di installazione per configurarlo. Tuttavia, potrebbero esserci delle differenze nell'installazione di Windows. Si noti che Oracle JRE viene fornito in bundle con JDK.
Se ti accorgi mai che la tua configurazione JDK Java sta usando la versione sbagliata del compilatore, o sembra funzionare magicamente, senza essere esplicitamente definito così (senza lanciare l'incantesimo), allora potresti avere un link simbolico da qualche parte nelle variabili di ambiente . Quindi potresti voler verificare il collegamento simbolico.