Ik moet weten waar JDK zich op mijn computer bevindt.
Bij het uitvoeren van Java -version
in 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_HOME
zelf 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 set
uit 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 -All
Part 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 bin
map 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_HOME
omdat je headers kunt vinden als je JNI-bronbestanden bouwt. Hoewel het waar is which java
het 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 java
de JDK-locatie niet toont, omdat de opdracht java
in 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