it-swarm.com.de

Wie finde ich heraus, wo JDK auf meinem Windows-Computer installiert ist?

Ich muss wissen, wo sich JDK auf meinem Computer befindet.

Wenn Sie Java -version in cmd ausführen, wird die Version als '1.6.xx' angezeigt. Um den Speicherort dieses SDK auf meinem Computer zu finden, habe ich versucht, echo %Java_HOME% zu verwenden, aber es wird nur 'Java_HOME' angezeigt (da in meinen Umgebungsvariablen keine 'Java_PATH'-Variable festgelegt ist).

279
Ashine

Wenn Sie Linux/Unix/Mac OS X verwenden:

Versuche dies:

$ which Java

Sollte den genauen Ort ausgeben.

Danach können Sie die Umgebungsvariable Java_HOME selbst festlegen.

Auf meinem 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

Wenn Sie Windows verwenden:

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

Windows> Start> cmd>

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

Wenn Sie ein JDK installiert haben, wird der Pfad angezeigt.
zum Beispiel: C:\Program Files\Java\jdk1.6.0_30\bin\javac.exe

103
grokster

In Windows an der Eingabeaufforderung

where javac

87
NanoBennett

In Windows lautet die Standardeinstellung: C:\Program Files\Java\jdk1.6.0_14 (wobei sich die Nummern unterscheiden können, da sie die Version sind).

27

Das Java-Installationsprogramm legt mehrere Dateien im Ordner% WinDir%\System32 ab (Java.exe, javaws.exe und einige andere). Wenn Sie Java.exe in die Befehlszeile eingeben oder einen Prozess ohne vollständigen Pfad erstellen, führt Windows diese als letzte Möglichkeit aus, wenn sie in% PATH% -Ordnern fehlen.

Sie können alle in der Registrierung installierten Versionen von Java nachschlagen. Schauen Sie sich HKLM\SOFTWARE\JavaSoft\Java Runtime Environment und HKLM\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment für 32-Bit Java unter 64-Bit-Windows an.

So findet Java selbst heraus, welche Versionen installiert sind. Aus diesem Grund können sowohl die 32-Bit- als auch die 64-Bit-Version nebeneinander existieren und funktionieren einwandfrei, ohne zu stören.

26

Einfach und unkompliziert auf Windows-Plattformen:

wobei Java

21
luccaa

Das folgende Stapelskript druckt die vorhandene Standard-JRE aus. Es kann leicht modifiziert werden, um die installierte JDK-Version zu finden, indem Java Runtime Environment durch Java Development Kit ersetzt wird.

@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
16
munsingh

Unter Windows 10 können Sie den Pfad unter Systemsteuerung> Java ermitteln. In der angezeigten Anzeige finden Sie den Pfad, wie in der Abbildung unten gezeigt. Wechseln Sie in der Java Systemsteuerung zur Registerkarte "Java" und klicken Sie unter der Beschreibung "Anzeigen und Verwalten von Java Laufzeitversionen und -einstellungen für Java Anwendungen und Applets" auf die Schaltfläche "Anzeigen" . '

Dies sollte unter Windows 7 und möglicherweise anderen aktuellen Windows-Versionen funktionieren.

enter image description here

13
smartexpert

Geben Sie in einer Windows-Eingabeaufforderung Folgendes ein:

set Java_home

Wenn Ihnen die Befehlsumgebung nicht gefällt, können Sie sie über Folgendes überprüfen:

Startmenü> Computer> Systemeigenschaften> Erweiterte Systemeigenschaften. Öffnen Sie dann die Registerkarte Erweitert> Umgebungsvariablen und versuchen Sie in der Systemvariablen, Java_HOME zu finden.

enter image description here

12
AndroidDev

Weitere Informationen zu Windows ... variable Java.home ist nicht immer derselbe Speicherort wie die ausgeführte Binärdatei.

Wie Denis The Menace sagt, legt das Installationsprogramm Java Dateien in Programme, aber auch Java.exe in System32 ab. Mit nichts Java im Zusammenhang mit dem Pfad Java-Version kann immer noch funktionieren. Wenn das Programm von PeterMmm jedoch ausgeführt wird, wird der Wert Programme als Java.home gemeldet. Dies ist nicht falsch (Java ist dort installiert), aber die tatsächlich ausgeführte Binärdatei befindet sich in System32.

Fügen Sie dem Code von PeterMmm die folgende Zeile hinzu, um den Speicherort der Binärdatei Java.exe zu ermitteln, damit das Programm noch eine Weile ausgeführt wird:

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

Kompilieren Sie es und führen Sie es aus. Suchen Sie dann den Speicherort des Abbilds Java.exe. Z.B. Öffnen Sie in Windows 7 den Task-Manager, suchen Sie den Eintrag Java.exe, klicken Sie mit der rechten Maustaste und wählen Sie "Dateispeicherort öffnen". Dadurch wird der genaue Speicherort der Binärdatei Java geöffnet. In diesem Fall wäre es System32.

10
Moika Turns

Unter Windows können Sie verwenden

C:>dir /b /s Java.exe

den vollständigen Pfad aller "Java.exe" auf Ihrem Laufwerk C: zu drucken, unabhängig davon, ob sie sich in Ihrer PATH-Umgebungsvariablen befinden.

9
Thomas Bender

Führen Sie dieses Programm von der Kommandozeile aus:

// 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
PeterMmm

Powershell One Liner:

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

Haben Sie versucht, Ihre Variable% PATH% zu betrachten? Das ist es, was Windows verwendet, um ausführbare Dateien zu finden.

5
sblundy

Führen Sie einfach den Befehl set in Ihrer Befehlszeile aus. Dann sehen Sie alle Umgebungsvariablen, die Sie eingestellt haben.

Oder wenn Sie es unter Unix vereinfachen können:

$ set | grep "Java_HOME" 
5
anon

Dies ist betriebssystemspezifisch. Unter Unix:

which Java

zeigt den Pfad zur ausführbaren Datei an. Ich kenne kein Windows-Äquivalent, aber dort befindet sich normalerweise der Ordner bin der JDK-Installation im System PATH:

echo %PATH%
3

Keine dieser Antworten ist für Linux richtig, wenn Sie nach einem Verzeichnis suchen, das die Unterverzeichnisse enthält, z. B .: bin, docs, include, jre, lib usw.

Unter Ubuntu für openjdk1.8.0 befindet sich dies in: /usr/lib/jvm/Java-1.8.0-openjdk-AMD64

und vielleicht bevorzugen Sie es, dies für Java_HOME zu verwenden, da Sie in der Lage sind, Header zu finden, wenn Sie JNI-Quelldateien erstellen. Es ist zwar wahr, dass which Java den binären Pfad bereitstellt, aber es ist nicht das wahre JDK-Zuhause.

2
EntangledLoops

Führen Sie unter macOS Folgendes aus:

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

Auf meinem Computer wird Folgendes gedruckt:

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

Beachten Sie, dass beim Ausführen von which Java der JDK-Speicherort nicht angezeigt wird, da der Befehl Java stattdessen Teil von JavaVM.framework ist, der das echte JDK umschließt:

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

Für 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

Dieser Link kann hilfreich sein, um zu erklären, wie Sie Java ausführbare Dateien aus bash finden: http://srcode.org/2014/05/07/detect-Java-executable/

0
Qian Chen

Skript für 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
0
Rudixx

in Windows cmd:

set "Java_HOME" 
0
Husam

Ich habe munsingh s Antwort oben verbessert, indem ich bei Bedarf den Registrierungsschlüssel in 64-Bit- und 32-Bit-Registern getestet habe:

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

Referenz für den Zugriff auf die 64-Bit-Registrierung

0
JohnP2