Hoe vind ik waar JDK is geïnstalleerd op mijn Windows-computer?

Ik moet weten waar JDK zich op mijn computer bevindt.

Bij het uitvoeren van Java -versionin cmd, wordt de versie weergegeven als ‘1.6.xx’.
Om de locatie van deze SDK op mijn computer te vinden, heb ik geprobeerd echo %JAVA_HOME%te gebruiken, maar het toont alleen ‘JAVA_HOME’ (omdat er geen ‘JAVA_PATH’ var is ingesteld in mijn omgevingsvariabelen).


Antwoord 1, autoriteit 100%

Als je Linux/Unix/Mac OS X gebruikt:

Probeer dit:

$ which java

Moet de exacte locatie weergeven.

Daarna kunt u de omgevingsvariabele JAVA_HOMEzelf instellen.

Op mijn 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

Als u Windows gebruikt:

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

Antwoord 2, autoriteit 33%

Windows > Begin > cmd >

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

Als je een JDK hebt geïnstalleerd, wordt het pad weergegeven,
bijvoorbeeld: C:\Program Files\Java\jdk1.6.0_30\bin\javac.exe


Antwoord 3, autoriteit 30%

In Windows bij de opdrachtprompt

where javac


Antwoord 4, autoriteit 9%

In Windows is de standaard: C:\Program Files\Java\jdk1.6.0_14(waar de nummers kunnen verschillen, aangezien het de versie is).


Antwoord 5, autoriteit 7%

Java-installatieprogramma plaatst verschillende bestanden in de map %WinDir%\System32 (java.exe, javaws.exe en enkele andere). Wanneer u java.exe typt in de opdrachtregel of een proces maakt zonder volledig pad, voert Windows deze als laatste redmiddel uit als ze ontbreken in %PATH%-mappen.

U kunt alle versies van Java opzoeken die in het register zijn geïnstalleerd. Bekijk HKLM\SOFTWARE\JavaSoft\Java Runtime Environment en HKLM\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment voor 32-bits java op 64-bits Windows.

Zo komt Java zelf erachter dat verschillende versies zijn geïnstalleerd. En dit is de reden waarom zowel de 32-bits als de 64-bits versie naast elkaar kunnen bestaan en prima werken zonder interferentie.


Antwoord 6, autoriteit 7%

Eenvoudig en eenvoudig op Windows-platforms:

waar java


Antwoord 7, autoriteit 7%

Op Windows 10 kunt u het pad vinden door naar Configuratiescherm > Programma’s > Java. In het paneel dat verschijnt, kun je het pad vinden zoals getoond in de onderstaande schermafbeelding. Ga in het Java-configuratiescherm naar het tabblad ‘Java’ en klik vervolgens op de knop ‘Bekijken’ onder de beschrijving ‘Bekijk en beheer Java Runtime-versies en instellingen voor Java-applicaties en -applets’.

Dit zou moeten werken op Windows 7 en mogelijk andere recente versies van Windows.


Antwoord 8, autoriteit 5%

Het batchscript hieronder drukt de bestaande standaard JRE af. Het kan eenvoudig worden aangepast om de geïnstalleerde JDK-versie te vinden door de Java Runtime Environmentte vervangen door 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

Antwoord 9, autoriteit 4%

Onder Windows kunt u

C:>dir /b /s java.exe

om het volledige pad van elke “java.exe” op uw C:-schijf af te drukken, ongeacht of ze zich op uw PATH-omgevingsvariabele bevinden.


Antwoord 10, autoriteit 4%

Typ in een Windows-opdrachtprompt:

set java_home

Of, als u de opdrachtomgeving niet leuk vindt, kunt u deze controleren via:

Startmenu > Computer > Systeemeigenschappen > Geavanceerde systeemeigenschappen. Open vervolgens het tabblad Geavanceerd > Omgevingsvariabelen en in systeemvariabele proberen JAVA_HOME te vinden.


Antwoord 11, autoriteit 3%

Powershell-oneliner:

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

Antwoord 12, autoriteit 3%

Meer over Windows… variabele java.homeis niet altijd dezelfde locatie als het binaire bestand dat wordt uitgevoerd.

Zoals Denis The Menace zegt, plaatst het installatieprogramma Java-bestanden in Program Files, maar ook java.exein System32. Zonder Java gerelateerd aan het pad java -versionkan het nog steeds werken. Wanneer het programma van PeterMmm echter wordt uitgevoerd, rapporteert het de waarde van Program Filesals java.home, dit is niet verkeerd (Java is daar geïnstalleerd) maar het daadwerkelijke binaire bestand dat wordt uitgevoerd, bevindt zich in System32.

Een manier om de locatie van het java.exebinaire bestand op te sporen, voegt u de volgende regel toe aan de code van PeterMmm om het programma nog een tijdje te laten werken:

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

Compileer en voer het uit en zoek vervolgens naar de locatie van de java.exe-afbeelding. bijv. in Windows 7 opent u Taakbeheer, zoekt u het item java.exe, klikt u met de rechtermuisknop en selecteert u ‘bestandslocatie openen’, dit opent de exacte locatie van het Java-binaire bestand. In dit geval zou het System32zijn.


Antwoord 13, autoriteit 2%

Voer dit programma uit vanaf de opdrachtregel:

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

Antwoord 14, autoriteit 2%

Heb je geprobeerd naar je %PATH% variabele te kijken. Dat is wat Windows gebruikt om elk uitvoerbaar bestand te vinden.


Antwoord 15

Voer gewoon de opdracht setuit in uw opdrachtregel. Dan zie je alle omgevingsvariabelen die je hebt ingesteld.

Of als je het op Unix kunt vereenvoudigen:

$ set | grep "JAVA_HOME" 

Antwoord 16

In Windows PowerShell kunt u de Get-Command-functie gebruiken om te zien waar Java is geïnstalleerd:

Get-Command -All java

of

gcm -All java

De -AllPart zorgt ervoor dat alle plaatsen die het in het pad-opzoek wordt weergegeven. Hieronder is de voorbeelduitgang.

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

Antwoord 17

Dit is OS-specifiek. Op Unix:

which java

geeft het pad naar het uitvoerbare bestand weer. Ik ken geen Windows-equivalent, maar daar heb je meestal de binmap van de JDK-installatie in het systeem PATH:

echo %PATH%

Antwoord 18

Geen van deze antwoorden is correct voor Linux als u op zoek bent naar het huis dat de subdieren bevat, zoals: Bin, Docs, omvatten, JRE, LIB, enz.

Op Ubuntu voor OpenJDK1.8.0, dit is in:
/usr/lib/jvm/java-1.8.0-openjdk-amd64

en misschien gebruik je dat liever voor JAVA_HOMEomdat je headers kunt vinden als je JNI-bronbestanden bouwt. Hoewel het waar is which javahet binaire pad zal leveren, is het niet het echte JDK-thuis.


Antwoord 19

Op macOS voer je uit:

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

Op mijn machine wordt dit afgedrukt:

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

Houd er rekening mee dat het uitvoeren van which javade JDK-locatie niet toont, omdat de opdracht javain plaats daarvan deel uitmaakt van JavaVM.framework, dat de echte 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

Antwoord 20

in Windows cmd:

set "JAVA_HOME" 

Antwoord 21

#!/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

Voor vensters:

@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

Deze link kan helpen om uit te leggen hoe u het uitvoerbare Java-bestand van bash kunt vinden: http ://srcode.org/2014/05/07/detect-java-executable/


Antwoord 22

Ik heb het bovenstaande antwoord van munsinghverbeterd door te testen op de registersleutel in 64-bits en 32-bits registers, als nodig:

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

verzoek om toegang tot het 64-bit register


Antwoord 23

Script voor 32/64 bit Windows.

@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

Antwoord 24

Misschien is de bovenstaande methoden werken … Ik probeerde een aantal en niet voor mij. Wat deed was dit:

Voer dit in terminal:

/usr/libexec/java_home

Other episodes