Windows makinemde JDK'nın yüklü olduğu yeri nasıl bulabilirim?


303

JDK'nın makinemde nerede olduğunu bilmem gerekiyor.

Çalışan üzerinde Java -versionde cmd , bu 1.6.xx 'olarak versiyonunu gösterir. Bu SDK'nın makinemdeki yerini bulmak için kullanmayı denedim echo %JAVA_HOME%ama sadece 'JAVA_HOME' gösteriyor (ortam değişkenlerimde 'JAVA_PATH' var ayarlanmadığı için).


1
ne yazık ki, aşağıdaki cevapların bazılarının işe yaramayabileceğini düşünüyorum çünkü görünüşe göre Java'nın daha yeni sürümlerinde bir şeyler değişti. Bugün 7.60 Java SDK sürümünü indirdim. Biraz arama yaptıktan sonra C: \ Program Files (x86) \ Java \ jdk1.7.0_60 konumunda buldunuz. Zaten yüklü olan eski bir sürüm 6 JRE vardı. Bu C: \ Program Files \ Java idi ve bu yeni yükleme değil% PATH% oldu.
likejudo

1
En iyi cevap altta, PowerShell için majkinetor'dan bir astar: $ p = 'HKLM: \ SOFTWARE \ JavaSoft \ Java Geliştirme Kiti'; $ v = (gp $ p) .CurrentVersion; JavaHome
JohnP2

bir şey daha, eğer jdk'niz intellij fikri ile paketlenmişse, fikir kurulumuna yakın bir yerde olabilir. Benim için fikir klasöründen bir klasör 1 dizinindeydi ve PATH değişkeni Program Dosyalarında bir jre işaret etti
KGS

Yanıtlar:


329

Linux / Unix / Mac OS X kullanıyorsanız:

Bunu dene:

$ which java

Kesin yeri çıktı.

Bundan sonra, JAVA_HOMEortam değişkenini kendiniz ayarlayabilirsiniz .

Bilgisayarımda (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

Windows kullanıyorsanız:

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

Aslında,% VAR_NAME% formu Windows
sblundy

1
Cevabı Linux / Unix / Mac OS X ve Windows örnekleriyle güncelledi.
Pablo Santa Cruz

125
where javaWindows'da çalışıyor (en azından Windows 7'den itibaren) Ama gerçekten bir JK değil, bir JDK istiyorsanız, 'bin / javac / için döndürülen dizinlere bakmanız gerekir
Jon Strayer

burada java.exe Yolda ise java tam yol vermez, oysa Pablo'nun ... çözümü bunu tercih eder.
Richard Johnson

1
MacOS tek astarlı:ls -l $(which java) | awk '{print $11}'
msanford

111

Windows> Başlat> cmd>

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

Yüklü bir JDK'nız varsa, Yol görüntülenir,
örneğin:C:\Program Files\Java\jdk1.6.0_30\bin\javac.exe


16
Windows (7+) => burada javac.exe
hB0

6
Pencerelerde, Java nerede
Pabitra Dash

10
where javayalnızca yürütülebilir dosya PATH içindeyse çalışır. Herhangi bir nedenle, javac yolda değilse, herhangi bir sonuç döndürmez, ancak JDK'nın yüklü olmadığı anlamına gelmez. Bu nedenle, genel olarak, @grokster çözümü tarafından önerilen dosya arama çözümü bir sonucu garanti eder (düşüncenin tamamlanması zaman alabilir).
Nikita G.15

'For-loop' şeyler işe yaramadı, ancak ben burada buldum: C: \ Program Files (x86) \ Java \ jdk1.6.0_24 \ bin>
AjayKumarBasuthkar

Android studio'yu kullanmak için bu ( codelabs.developers.google.com/codelabs/… ) öğreticisini izliyorsanız , gerçek yolun yukarıdaki komut tarafından döndürülen yol olmayacağını unutmayın. Büyük olasılıkla, "C: \\ Program Files \ Java | <jdk>" gibi bir şeye sahip olacaksınız, burada "jdk" yerine JDK sürüm 10 için "jdk-10.0.1" gibi bir şey olurdu
Euler_Salter

96

Windows'ta komut isteminde

where javac


8
Pencerelerde, Java nerede
Pabitra Dash

7
Bu sadece javac PATH içindeyse işe yarar. Değilse, bu komut bulunamadığını söyleyecektir, ancak JDK hala yüklenebilir. JDK kurulumundan sonra PATH güncellenmediyse diğer yöntemleri kullanın.
Nikita G.15

1
başka hangi yöntemler? Sen kullanarak söz @ECHO yapmak (javac.exe) 'de% i için. % ~ $ PATH: i , ancak yazdığınız gibi, PATH'de ayarlamadıysanız çalışmaz.
Nimrod

30

Pencerelerde varsayılan değer şudur: C:\Program Files\Java\jdk1.6.0_14(sayılar sürüm olduklarından farklı olabilir).


farklı sürüm numarasını nasıl elde edersiniz?
LZH

sadece kaşifinizden kademeli olarak konuma gidin ve yüklediğiniz jdk klasörü sürümünü göreceksiniz.
ahnbizcad

26

Java yükleyicisi birkaç dosyayı% WinDir% \ System32 klasörüne koyar (java.exe, javaws.exe ve diğerleri). Komut satırına java.exe yazdığınızda veya tam yol olmadan işlem oluşturduğunuzda, Windows% PATH% klasörlerinde eksikse bunları son çare olarak çalıştırır.

Kayıt defterinde yüklü tüm Java sürümlerini arayabilirsiniz. 64 bit Windows'ta 32 bit java için HKLM \ SOFTWARE \ JavaSoft \ Java Runtime Environment ve HKLM \ SOFTWARE \ Wow6432Node \ JavaSoft \ Java Runtime Environment'a göz atın.

Java'nın kendisinde yüklü farklı sürümleri bu şekilde bulur. Bu yüzden hem 32 bit hem de 64 bit sürüm birlikte var olabilir ve müdahale etmeden iyi çalışır.


23

Windows platformlarında sade ve basit:

nerede java


8
Yanlış Java konumu C: \ WINDOWS \ System32 \ java.exe ile sonuçlanır. Ancak gerçek jdk C: \ Java \ jdk1.7.0 \ 'de kurulur (JAVA_HOME ayarlandığı gibi)
Himanshu Bhardwaj

17

Aşağıdaki toplu komut dosyası, var olan varsayılan JRE'yi yazdırır. Java Runtime Environment yazılımını Java Development Kit ile değiştirerek yüklenen JDK sürümünü bulmak için kolayca değiştirilebilir .

@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

Windows 10'da, Denetim Masası> Java'ya giderek yolu bulabilirsiniz. Görünen panelde, yolu aşağıdaki ekran görüntüsünde gösterildiği gibi bulabilirsiniz. Java Denetim Masası'nda 'Java' sekmesine gidin ve ardından 'Java uygulamaları ve uygulamaları için Java Runtime sürümlerini ve ayarlarını görüntüleme ve yönetme' açıklamasının altındaki 'Görünüm' düğmesini tıklayın.

Bu, Windows 7 ve muhtemelen Windows'un diğer son sürümlerinde çalışmalıdır.

resim açıklamasını buraya girin


Windows 10'dayım ve kontrol panelinde java yok
Lang React Dev

1
Java'nın yüklendiğinden ve Windows kurulum paketi kullanılarak yüklendiğinden emin misiniz?
smartexpert

Java'nın nereden yüklenebileceğini öğrenmek için hesap ve sistem ortam değişkenlerine bakmayı deneyebilir, javacpl.exe dosyasını ara
smartexpert

12

Windows komut istemine şunu yazın:

set java_home

Veya komut ortamını beğenmediyseniz, aşağıdakileri kontrol edebilirsiniz:

Başlat menüsü> Bilgisayar> Sistem Özellikleri> Gelişmiş Sistem Özellikleri. Ardından Gelişmiş sekmesi> Ortam Değişkenleri'ni açın ve sistem değişkeninde JAVA_HOME'u bulmaya çalışın.

resim açıklamasını buraya girin


Bu bana jdk klasörünü verir. Bir Scala Çalışma Sayfasında System.getProperty ("java.home") çalıştırdığımda, bana jre alt klasörü verir. Görünüşe göre Java Home hakkında bazı belirsizlikler var.
Ion Freeman

11

Windows altında şunları kullanabilirsiniz:

C:>dir /b /s java.exe

PATH ortam değişkeninizde olup olmadıklarına bakılmaksızın, C: sürücünüzdeki her "java.exe" dosyasının tam yolunu yazdırmak için.


10

Windows hakkında daha fazlası ... değişken java.home her zaman çalıştırılan ikili dosya ile aynı konum değildir.

Denis Menace söylediği gibi, yükleyici koyar Java içine dosyaları Program Files aynı zamanda, java.exe içine System32 . Java ile ilgili hiçbir şey olmadan java -version hala çalışabilir. Ancak PeterMmm programı çalıştırıldığında java.home olarak Program Files'ın değerini bildirir , bu yanlış değildir (Java orada yüklüdür), ancak çalıştırılmakta olan gerçek ikili System32'da bulunur .

Yerini avlamak için bir yolu java.exe ikili, uzun süre çalışan bir program tutmak PeterMmm koduyla aşağıdaki satırı ekleyin:

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

Derleyin ve çalıştırın, sonra java.exe görüntüsünün konumunu avlayın . Örneğin Windows 7'de görev yöneticisini açın, java.exe girişini bulun , sağ tıklayın ve 'dosya konumunu aç'ı seçin, bu Java ikili dosyasının tam konumunu açar. Bu durumda System32 olur .


9

Bu programı komut satırından çalıştırın:

// File: Main.java
public class Main {

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

}


$ javac Main.java
$ java Main

4
önce bunu derlemesi gerekmeyecek miydi?
Irwin

2
Yüklü ve önce yolda bir JRE bulacaktır.
Jon Strayer

9

Powershell bir astar:

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

1
JDK 11 kullanımı için$p='HKLM:\SOFTWARE\JavaSoft\JDK'; $v=(gp $p).CurrentVersion; (gp $p/$v).JavaHome
Diomidis Spinellis

6

% PATH% değişkeninize bakmayı denediniz mi? Windows'un herhangi bir yürütülebilir dosyayı bulmak için kullandığı budur.


Evet. Echo %PATH%. Benimki c:\Program Files\JavaWindows 7'de görünüyor
Mark Irvin

5

setKomutu komut satırınızda yürütün . Ardından ayarladığınız tüm ortam değişkenlerini görürsünüz.

Veya Unix'te basitleştirebilirsiniz:

$ set | grep "JAVA_HOME" 

Teşekkürler Roflcoptr, 'set' hakkında bilgi edinmek gerçekten yararlı oldu. Sistemimde aynı değişken için iki giriş gösteriliyor, yanlış olanı nasıl silebilirim.
Ashine

3

Bu işletim sistemine özgüdür. Unix'te:

which java

yürütülebilir dosyanın yolunu görüntüler. Bir Windows eşdeğeri bilmiyorum, ama orada genellikle binsistemde JDK yükleme klasörü var PATH:

echo %PATH%

Ben de bu cevabı verecektim, ama açıkça bir pencere cevabı arıyor.
Don Branson

@DonBranson Bu gönderi gönderildikten sonra metni Windows'u içerecek şekilde değiştirdi.
EntangledLoops

2

Bin, docs, include, jre, lib, vb. Gibi alt dizinleri içeren evi arıyorsanız, bu yanıtların hiçbiri Linux için doğru değildir.

Ubuntu'da openjdk1.8.0 için: /usr/lib/jvm/java-1.8.0-openjdk-amd64

ve JAVA_HOMEJNI kaynak dosyaları oluşturursanız üstbilgileri bulabileceğiniz için bunu kullanmayı tercih edebilirsiniz . which javaİkili yolu sağlayacak doğru olsa da , gerçek JDK evi değildir.


1

MacOS'ta çalıştırın:

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

Makinemde bu yazdırılıyor:

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

which javaÇalışmanın JDK konumunu göstermediğini unutmayın , çünkü javakomut bunun yerine JavaVM.frameworkgerçek JDK'yı saran bir parçasıdır :

$ 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


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

Pencereler için:

@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

Bu bağlantı bash'dan java çalıştırılabilir dosyasının nasıl bulunacağını açıklamaya yardımcı olabilir: http://srcode.org/2014/05/07/detect-java-executable/


1
Bu bağlantı soruyu cevaplayabilse de, cevabın temel kısımlarını buraya eklemek ve bağlantıyı referans olarak sağlamak daha iyidir. Bağlantı verilen sayfa değişirse, yalnızca bağlantı yanıtları geçersiz olabilir.
Shaiful Islam

1
Teşekkürler @ShaifulIslam, haklısın. Kodu linkten ekledim.
Qian Chen

0

Gerekirse 64-bit ve 32-bit kayıtlarda kayıt defteri anahtarını test ederek munsingh'in cevabını iyileştirdim :

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

bit kayıt defterine erişim için başvuru


0

32/64 bit Windows için komut dosyası.

@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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.