Jak mogę znaleźć, gdzie JDK jest zainstalowany na moim komputerze z systemem windows?

Muszę wiedzieć, gdzie znajduje się JDK na mojej maszynie.

Po uruchomieniu Java -versionW cmd, wyświetla wersję jako '1.6.xx". Aby znaleźć lokalizację tego zestawu SDK na moim komputerze, próbowałem użyć echo %JAVA_HOME%, ale pokazuje on tylko "JAVA_HOME" (ponieważ w moich zmiennych środowiskowych nie ma ustawionego var "JAVA_PATH").

 327
Author: ROMANIA_engineer, 2011-01-13

24 answers

Jeśli używasz Linux / Unix / Mac OS X:

Spróbuj tego:

$ which java

Powinien podać dokładną lokalizację.

Następnie możesz samodzielnie ustawić zmienną środowiskową JAVA_HOME.

W moim komputerze (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

Jeśli używasz systemu Windows:

c:\> for %i in (java.exe) do @echo.   %~$PATH:i
 352
Author: Pablo Santa Cruz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-13 14:28:52

Windows > Start > cmd >

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

Jeśli masz zainstalowany JDK, wyświetlana jest ścieżka,
na przykład: C:\Program Files\Java\jdk1.6.0_30\bin\javac.exe

 118
Author: grokster,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-09 16:29:37

W Windows w wierszu polecenia

where javac

 107
Author: NanoBennett,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-16 14:49:14

W systemie windows domyślną wartością jest: C:\Program Files\Java\jdk1.6.0_14 (gdzie liczby mogą się różnić, ponieważ są wersją).

 31
Author: Ronen Rabinovici,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-24 21:24:50

Proste i proste na platformach Windows:

Gdzie java

 28
Author: luccaa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-25 16:33:52

Instalator Javy umieszcza kilka plików w folderze %WinDir% \ System32 (java.exe, javaws.exe i kilka innych). Kiedy wpisujesz Javę.exe w wierszu poleceń lub utwórz proces bez pełnej ścieżki, Windows uruchamia je jako ostateczność, jeśli brakuje ich w folderach %PATH%.

Możesz wyszukać wszystkie wersje Javy zainstalowane w rejestrze. Spójrz na HKLM \ SOFTWARE \ JavaSoft \ Java Runtime Environment i HKLM \ SOFTWARE\Wow6432Node \ JavaSoft \ Java Runtime Environment dla 32-bitowej Javy na 64 bit Okna.

Tak samo java dowiaduje się o zainstalowanych wersjach. I dlatego zarówno Wersja 32-bitowa, jak i 64-bitowa mogą współistnieć i działać dobrze bez ingerencji.

 27
Author: Denis The Menace,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-01 10:48:39

W systemie Windows 10 możesz znaleźć ścieżkę, przechodząc do Panelu sterowania > Programy > Java. W wyświetlonym panelu możesz znaleźć ścieżkę, jak pokazano na poniższym zrzucie ekranu. W Panelu sterowania Java przejdź do zakładki "Java", a następnie kliknij przycisk "Wyświetl" pod opisem " Wyświetl i Zarządzaj wersjami i ustawieniami Java Runtime dla aplikacji i apletów Java.'

To powinno działać na Windows 7 i ewentualnie innych najnowszych wersjach systemu Windows.

Tutaj wpisz opis obrazka

 19
Author: smartexpert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-11-20 07:55:40

Poniższy skrypt wsadowy wyświetli istniejący domyślny JRE. Można go łatwo zmodyfikować, aby znaleźć zainstalowaną wersję JDK, zastępując Java Runtime Environment 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
 18
Author: munsingh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-20 08:56:57

W systemie Windows możesz użyć

C:>dir /b /s java.exe

Aby wydrukować pełną ścieżkę dla każdego " java.exe " na dysku C:, niezależnie od tego, czy znajdują się one w zmiennej środowiskowej PATH.

 15
Author: Thomas Bender,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-24 17:03:38

W wierszu polecenia systemu Windows wpisz:

set java_home

Lub, jeśli nie podoba Ci się środowisko poleceń, możesz je sprawdzić z:

Menu Start > Komputer > Właściwości systemu > zaawansowane właściwości systemu. Następnie otwórz zakładkę Zaawansowane > Zmienne środowiskowe i w zmiennej systemowej spróbuj znaleźć JAVA_HOME.

Tutaj wpisz opis obrazka

 13
Author: AndroidDev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-25 18:15:17

Powershell one liner:

$p='HKLM:\SOFTWARE\JavaSoft\Java Development Kit'; $v=(gp $p).CurrentVersion; (gp $p/$v).JavaHome
 11
Author: majkinetor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-17 08:15:01

Więcej o Windows... zmienna java.home nie zawsze jest tą samą lokalizacją co uruchomiony plik binarny.

Jak mówi Denis The Menace, instalator umieszcza pliki Javy w plikach programów, ale także java.exe do System32 . Nie ma nic związanego z Javą na ścieżce java-version może nadal działać. Jednak gdy program PeterMmm jest uruchomiony raportuje wartość Program Files jako java.home , to nie jest źle (Java jest tam zainstalowana) ale rzeczywiste uruchamianie binarne znajduje się w System32 .

Jeden ze sposobów na wyszukanie lokalizacji Javy.exe binary, dodaj następującą linijkę do kodu PeterMmm, aby program działał dłużej:

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

Skompiluj i uruchom go, a następnie znajdź lokalizację Javy.exe image. Np. w Windows 7 otwórz Menedżera zadań, znajdź java.exe , Kliknij prawym przyciskiem myszy i wybierz 'Otwórz lokalizację pliku', otworzy to dokładną lokalizację Javy binary. W tym przypadku byłby to System32 .

 10
Author: Moika Turns,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-24 10:23:38

Uruchom ten program z linii poleceń:

// File: Main.java
public class Main {

    public static void main(String[] args) {
       System.out.println(System.getProperty("java.home"));
    }

}


$ javac Main.java
$ java Main
 9
Author: PeterMmm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-13 14:42:56

Czy próbowałeś spojrzeć na zmienną % PATH%. Tego używa Windows, aby znaleźć dowolny plik wykonywalny.

 6
Author: sblundy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-13 14:28:54

Po prostu wykonaj set polecenie w linii poleceń. Następnie zobaczysz wszystkie zmienne środowiska, które ustawiłeś.

Lub jeśli na Unixie można to uprościć:

$ set | grep "JAVA_HOME" 
 5
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-13 14:31:54

To jest specyficzne dla systemu operacyjnego. Na Unix:

which java

Wyświetli ścieżkę do pliku wykonywalnego. Nie znam odpowiednika Windowsa, ale tam zazwyczaj masz folder bin instalacji JDK w systemie PATH:

echo %PATH%
 3
Author: Michael Borgwardt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-13 14:30:45

W Windows PowerShell możesz użyć funkcji Get-Command, aby zobaczyć, gdzie jest zainstalowana Java:

Get-Command -All java

Lub

gcm -All java

Część -All upewnia się, że wyświetli wszystkie miejsca, które pojawią się w wyszukiwarce ścieżek. Poniżej przykładowe wyjście.

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
 3
Author: Scott H,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-11-09 17:32:38

Żadna z tych odpowiedzi nie jest poprawna dla Linuksa, jeśli szukasz domu zawierającego subdiry takie jak: bin, docs, include, jre, lib, itp.

Na Ubuntu dla openjdk1.8. 0, to jest w: /usr/lib/jvm/java-1.8.0-openjdk-amd64

I możesz użyć tego dla JAVA_HOME, ponieważ będziesz mógł znaleźć nagłówki, jeśli zbudujesz pliki źródłowe JNI. Chociaż to prawda which java dostarczy ścieżkę binarną, to nie jest to prawdziwy dom JDK.

 2
Author: EntangledLoops,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-04 15:00:21

Na macOS Uruchom:

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

Na mojej maszynie to drukuje:

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

Zauważ, że uruchomienie which java nie pokazuje lokalizacji JDK, ponieważ java jest zamiast tego częścią JavaVM.framework, która zawija prawdziwy 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
 1
Author: jameshfisher,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-18 13:58:36

W Windows cmd:

set "JAVA_HOME" 
 0
Author: Husam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-25 17:42:20
#!/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

Dla 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

TEN link może pomóc wyjaśnić, jak znaleźć plik wykonywalny Javy z Basha: http://srcode.org/2014/05/07/detect-java-executable/

 0
Author: Qian Chen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-10 17:14:01

Poprawiłem odpowiedź munsingh powyżej testując klucz rejestru w 64-bitowych i 32-bitowych rejestrach, jeśli zajdzie taka potrzeba:

::- 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%"

Odniesienie do dostępu do rejestru 64-bitowego

 0
Author: JohnP2,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-28 17:51:23

Skrypt dla Windows 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
 0
Author: Rudixx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-03-26 23:23:06

Być może powyższe metody działają... Próbowałem trochę i nie dla mnie. Co to było:

Uruchom to w Terminalu:

/usr/libexec/java_home
 0
Author: Mudit Verma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-10-17 03:13:50