Come faccio a sapere dove è installato JDK sulla mia macchina Windows?

Devo sapere dove si trova JDK sulla mia macchina.

Durante l’esecuzione di Java -version in cmd , mostra la versione come “1.6.xx”. Per trovare la posizione di questo SDK sulla mia macchina ho provato a usare echo %JAVA_HOME% ma mostra solo ‘JAVA_HOME’ (dato che non esiste alcuna var ‘JAVA_PATH’ nelle mie variabili di ambiente).

Se stai usando Linux / Unix / Mac OS X:

Prova questo:

 $ which java 

Dovrebbe produrre la posizione esatta.

Successivamente, puoi impostare tu stesso la variabile d’ambiente JAVA_HOME .

Nel mio computer (Mac OS X – Snow Leopard):

 $ which java /usr/bin/java $ ls -l /usr/bin/java lrwxr-xr-x 1 root wheel 74 Nov 7 07:59 /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java 

Se stai usando Windows:

 c:\> for %i in (java.exe) do @echo. %~$PATH:i 

Windows> Start> cmd>

 C:> for %i in (javac.exe) do @echo. %~$PATH:i 

Se hai installato un JDK, viene visualizzato il percorso,
ad esempio: C:\Program Files\Java\jdk1.6.0_30\bin\javac.exe

In Windows al prompt dei comandi

where javac

Il programma di installazione Java mette diversi file nella cartella% WinDir% \ System32 (java.exe, javaws.exe e altri). Quando digiti java.exe nella riga di comando o crei un processo senza percorso completo, Windows li esegue come ultima risorsa, se mancano nelle cartelle% PATH%.

Puoi cercare tutte le versioni di Java installate nel registro. Dai un’occhiata a HKLM \ SOFTWARE \ JavaSoft \ Java Runtime Environment e HKLM \ SOFTWARE \ Wow6432Node \ JavaSoft \ Java Runtime Environment per java a 32 bit su Windows a 64 bit.

Ecco come java scopre diverse versioni installate. Ed è per questo che sia la versione a 32 che a 64 bit possono coesistere e funzionare bene senza interferire.

In Windows l’impostazione predefinita è C:\Program Files\Java\jdk1.6.0_14 (dove i numeri possono essere diversi, in quanto sono la versione).

Semplice e semplice su piattaforms Windows:

dove java

Lo script batch seguente stamperà il JRE predefinito esistente. Può essere facilmente modificato per trovare la versione di JDK installata sostituendo Java Runtime Environment con Java Development Kit .

 @echo off setlocal ::- Get the Java Version set KEY="HKLM\SOFTWARE\JavaSoft\Java Runtime Environment" set VALUE=CurrentVersion reg query %KEY% /v %VALUE% 2>nul || ( echo JRE not installed exit /b 1 ) set JRE_VERSION= for /f "tokens=2,*" %%a in ('reg query %KEY% /v %VALUE% ^| findstr %VALUE%') do ( set JRE_VERSION=%%b ) echo JRE VERSION: %JRE_VERSION% ::- Get the JavaHome set KEY="HKLM\SOFTWARE\JavaSoft\Java Runtime Environment\%JRE_VERSION%" set VALUE=JavaHome reg query %KEY% /v %VALUE% 2>nul || ( echo JavaHome not installed exit /b 1 ) set JAVAHOME= for /f "tokens=2,*" %%a in ('reg query %KEY% /v %VALUE% ^| findstr %VALUE%') do ( set JAVAHOME=%%b ) echo JavaHome: %JAVAHOME% endlocal 

Altro su Windows … variabile java.home non è sempre la stessa posizione del binario che viene eseguito.

Come dice Denis The Menace, l’installer mette i file Java in Program Files , ma anche java.exe in System32 . Con niente di Java correlato sul percorso, java -version può ancora funzionare. Tuttavia, quando viene eseguito il programma di PeterMmm , riporta il valore di Program Files come java.home , questo non è sbagliato (Java è installato lì), ma l’attuale binario che viene eseguito si trova in System32 .

Un modo per rintracciare la posizione del file binario java.exe , aggiungere la seguente riga al codice di PeterMmm per mantenere il programma in esecuzione un po ‘più a lungo:

 try{Thread.sleep(60000);}catch(Exception e) {} 

Compilalo ed eseguilo, quindi cerca la posizione dell’immagine java.exe . Ad esempio, in Windows 7 aprire il task manager, trovare la voce java.exe , fare clic con il tasto destro e selezionare ‘open file location’, questo apre la posizione esatta del file binario Java. In questo caso sarebbe System32 .

In un prompt dei comandi di Windows, digita semplicemente:

 set java_home 

Oppure, se non ti piace l’ambiente del comando, puoi verificarlo da:

Menu Start> Computer> Proprietà del sistema> Proprietà avanzate del sistema. Quindi apri la scheda Avanzate> Variabili d’ambiente e nella variabile di sistema prova a trovare JAVA_HOME.

inserisci la descrizione dell'immagine qui

Esegui questo programma dalla riga di comando:

 // File: Main.java public class Main { public static void main(String[] args) { System.out.println(System.getProperty("java.home")); } } $ javac Main.java $ java Main 

Sotto Windows, puoi usare

 C:>dir /b /s java.exe 

per stampare il percorso completo di ogni “java.exe” sull’unità C: indipendentemente dal fatto che si trovi nella variabile di ambiente PATH.

Su Windows 10 puoi scoprire il percorso andando su Pannello di controllo> Java. Nel pannello che appare, puoi trovare il percorso come mostrato nello screenshot qui sotto. Nel pannello di controllo Java, vai alla scheda ‘Java’ e quindi fai clic sul pulsante ‘Visualizza’ sotto la descrizione ‘Visualizza e gestisci le versioni e le impostazioni di Java Runtime per applicazioni e applet Java.’

Questo dovrebbe funzionare su Windows 7 e probabilmente su altre versioni recenti di Windows.

inserisci la descrizione dell'immagine qui

Hai provato a guardare la tua variabile% PATH%. Questo è ciò che Windows usa per trovare qualsiasi eseguibile.

Basta eseguire il comando set nella riga di comando. Quindi vedi tutte le variabili di ambiente che hai impostato.

Oppure se su Unix puoi semplificarlo:

 $ set | grep "JAVA_HOME" 

Powershell one liner:

 $p='HKLM:\SOFTWARE\JavaSoft\Java Development Kit'; $v=(gp $p).CurrentVersion; (gp $p/$v).JavaHome 

Questo è specifico per il sistema operativo. Su Unix:

 which java 

mostrerà il percorso dell’eseguibile. Non conosco un equivalente di Windows, ma di solito hai la cartella bin dell’installazione JDK nel PATH sistema:

 echo %PATH% 

Nessuna di queste risposte è corretta per Linux se stai cercando la casa che include i sottodivelli come: bin, docs, include, jre, lib, ecc.

Su Ubuntu per openjdk1.8.0, questo è in: /usr/lib/jvm/java-1.8.0-openjdk-amd64

e potresti preferire di usarlo per JAVA_HOME dato che sarai in grado di trovare le intestazioni se costruisci i file sorgente JNI. Mentre è vero which java fornirà il percorso binario, non è la vera casa JDK.

Su macOS, esegui:

 cd /tmp && echo 'public class Main {public static void main(String[] args) {System.out.println(System.getProperty("java.home"));}}' > Main.java && javac Main.java && java Main 

Sulla mia macchina, questa stampa:

 /Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home 

Si noti che in esecuzione which java non mostra la posizione JDK, perché il comando java è invece parte di JavaVM.framework , che avvolge il JDK reale:

 $ which java /usr/bin/java /private/tmp $ ls -l /usr/bin/java lrwxr-xr-x 1 root wheel 74 14 Nov 17:37 /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java 

in Windows cmd:

 set "JAVA_HOME" 
 #!/bin/bash if [[ $(which ${JAVA_HOME}/bin/java) ]]; then exe="${JAVA_HOME}/bin/java" elif [[ $(which java) ]]; then exe="java" else echo "Java environment is not detected." exit 1 fi ${exe} -version 

Per windows:

 @echo off if "%JAVA_HOME%" == "" goto nojavahome echo Using JAVA_HOME : %JAVA_HOME% "%JAVA_HOME%/bin/java.exe" -version goto exit :nojavahome echo The JAVA_HOME environment variable is not defined correctly echo This environment variable is needed to run this program. goto exit :exit 

Questo link potrebbe aiutare a spiegare come trovare java eseguibile da bash: http://srcode.org/2014/05/07/detect-java-executable/

Ho migliorato la risposta di Munsingh sopra testando la chiave di registro nei registri a 64-bit e 32-bit, se necessario:

 ::- Test for the registry location SET VALUE=CurrentVersion SET KEY_1="HKLM\SOFTWARE\JavaSoft\Java Development Kit" SET KEY_2=HKLM\SOFTWARE\JavaSoft\JDK SET REG_1=reg.exe SET REG_2="C:\Windows\sysnative\reg.exe" SET REG_3="C:\Windows\syswow64\reg.exe" SET KEY=%KEY_1% SET REG=%REG_1% %REG% QUERY %KEY% /v %VALUE% 2>nul IF %ERRORLEVEL% EQU 0 GOTO _set_value SET KEY=%KEY_2% SET REG=%REG_1% %REG% QUERY %KEY% /v %VALUE% 2>nul IF %ERRORLEVEL% EQU 0 GOTO _set_value ::- %REG_2% is for 64-bit installations, using "C:\Windows\sysnative" SET KEY=%KEY_1% SET REG=%REG_2% %REG% QUERY %KEY% /v %VALUE% 2>nul IF %ERRORLEVEL% EQU 0 GOTO _set_value SET KEY=%KEY_2% SET REG=%REG_2% %REG% QUERY %KEY% /v %VALUE% 2>nul IF %ERRORLEVEL% EQU 0 GOTO _set_value ::- %REG_3% is for 32-bit installations on a 64-bit system, using "C:\Windows\syswow64" SET KEY=%KEY_1% SET REG=%REG_3% %REG% QUERY %KEY% /v %VALUE% 2>nul IF %ERRORLEVEL% EQU 0 GOTO _set_value SET KEY=%KEY_2% SET REG=%REG_3% %REG% QUERY %KEY% /v %VALUE% 2>nul IF %ERRORLEVEL% EQU 0 GOTO _set_value :_set_value FOR /F "tokens=2,*" %%a IN ('%REG% QUERY %KEY% /v %VALUE%') DO ( SET JDK_VERSION=%%b ) SET KEY=%KEY%\%JDK_VERSION% SET VALUE=JavaHome FOR /F "tokens=2,*" %%a IN ('%REG% QUERY %KEY% /v %VALUE%') DO ( SET JAVAHOME=%%b ) ECHO "%JAVAHOME%" ::- SETX JAVA_HOME "%JAVAHOME%" 

riferimento per l’accesso al registro a 64 bit