Come faccio a trovare dove è installato JDK sul mio computer Windows?
Ho bisogno di sapere dove si trova JDK sulla mia macchina.
In esecuzione 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' (poiché non esiste un var 'JAVA_PATH' impostato nelle mie variabili di ambiente).
24 answers
Se si utilizza Linux / Unix / Mac OS X:
Prova questo:
$ which java
Dovrebbe emettere la posizione esatta.
Dopo di che, è possibile impostare JAVA_HOME
variabile di ambiente da soli.
In risorse del 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 si utilizza Windows:
c:\> for %i in (java.exe) do @echo. %~$PATH:i
Finestre > Avvio > cmd >
C:> for %i in (javac.exe) do @echo. %~$PATH:i
Se è 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
In Windows il valore predefinito è: C:\Program Files\Java\jdk1.6.0_14
(dove i numeri possono differire, poiché sono la versione).
Semplice e semplice su piattaforme Windows:
Dove java
Java installer inserisce diversi file nella cartella %WinDir%\System32 (java.exe, javaws.exe e alcuni altri). Quando si digita java.exe nella riga di comando o crea processo senza percorso completo, Windows li esegue come ultima risorsa se mancano nelle cartelle % PATH%.
È possibile cercare tutte le versioni di Java installate nel registro di sistema. Dai un'occhiata a HKLM\SOFTWARE\JavaSoft \ Java Runtime Environment e HKLM \ SOFTWARE \ Wow6432Node \ JavaSoft \ Java Runtime Environment per java a 32 bit su 64 bit Windows.
Questo è il modo in cui java stesso scopre diverse versioni installate. Ed è per questo che sia la versione a 32 bit che quella a 64 bit possono coesistere e funzionare bene senza interferire.
Su Windows 10 è possibile trovare il percorso andando su Pannello di controllo > Programmi > Java. Nel pannello che si presenta, è possibile trovare il percorso come dimostrato 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 versioni e impostazioni di runtime Java per applicazioni e applet Java.'
Questo dovrebbe funzionare su Windows 7 e possibilmente altre versioni recenti di Windows.
Lo script batch sottostante stamperà il JRE predefinito esistente. Può essere facilmente modificato per trovare la versione 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
In Windows, è possibile utilizzare
C:>dir /b /s java.exe
Per stampare il percorso completo di ogni " java.exe " sul tuo C: drive, indipendentemente dal fatto che siano sulla tua variabile d'ambiente PATH.
In un prompt dei comandi di Windows, basta digitare:
set java_home
Oppure, se non ti piace l'ambiente dei comandi, puoi controllarlo 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.
Powershell una fodera:
$p='HKLM:\SOFTWARE\JavaSoft\Java Development Kit'; $v=(gp $p).CurrentVersion; (gp $p/$v).JavaHome
Più su Windows... variabile java.home non è sempre la stessa posizione del binario che viene eseguito.
Come dice Denis The Menace, il programma di installazione inserisce i file Java in Programmi, ma anche java.exe in System32 . Con nulla 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 il binario effettivo in esecuzione si trova in System32 .
Un modo per dare la caccia alla posizione del java.exe binario, aggiungere la seguente riga al codice di PeterMmm per mantenere il programma in esecuzione un po ' di più:
try{Thread.sleep(60000);}catch(Exception e) {}
Compilare ed eseguirlo, quindi cercare la posizione del java.immagine exe . Ad esempio in Windows 7 aprire il task manager, trovare java.exe voce, fare clic destro e selezionare 'open file location', questo apre la posizione esatta del Java binario. In questo caso sarebbe System32.
Eseguire questo programma da 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
Hai provato a guardare la 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.
O se su Unix puoi semplificarlo:
$ set | grep "JAVA_HOME"
Questo è specifico del sistema operativo. Su Unix:
which java
Mostrerà il percorso dell'eseguibile. Non conosco un equivalente di Windows, ma in genere si ha la cartella bin
dell'installazione JDK nel sistema PATH
:
echo %PATH%
In Windows PowerShell è possibile utilizzare la funzione Get-Command
per vedere dove è installato Java:
Get-Command -All java
O
gcm -All java
La parte -All
fa in modo di mostrare tutti i punti in cui appare nella ricerca del percorso. Di seguito è riportato un esempio di output.
PS C:> gcm -All java
CommandType Name Version Source
----------- ---- ------- ------
Application java.exe 8.0.202.8 C:\Program Files (x86)\Common Files\Oracle\Java\jav...
Application java.exe 8.0.131... C:\ProgramData\Oracle\Java\javapath\java.exe
Nessuna di queste risposte è corretta per Linux se stai cercando la home che include i sottodiretti 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 usarlo per JAVA_HOME
poiché 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, eseguire:
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, questo stampa:
/Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home
Si noti che l'esecuzione di which java
non mostra la posizione JDK, perché il comando java
è invece parte di JavaVM.framework
, che avvolge il vero JDK:
$ 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 cmd di Windows:
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 l'eseguibile java 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%"
Script per finestre a 32/64 bit.
@echo off
setlocal enabledelayedexpansion
::- Get the Java Version
set KEY="HKLM\SOFTWARE\JavaSoft\Java Runtime Environment"
set KEY64="HKLM\SOFTWARE\WOW6432Node\JavaSoft\Java Runtime Environment"
set VALUE=CurrentVersion
reg query %KEY% /v %VALUE% 2>nul || (
set KEY=!KEY64!
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 KEY64="HKLM\SOFTWARE\WOW6432Node\JavaSoft\Java Runtime Environment\%JRE_VERSION%"
set VALUE=JavaHome
reg query %KEY% /v %VALUE% 2>nul || (
set KEY=!KEY64!
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
Forse i metodi di cui sopra funzionano... Ho provato alcuni e non per me. Che cosa è stato questo:
Eseguire questo nel terminale:
/usr/libexec/java_home