मुझे कैसे पता चलेगा कि मेरी विंडोज़ मशीन पर JDK कहाँ स्थापित है?


303

मुझे यह जानने की जरूरत है कि जेडीके मेरी मशीन पर कहां स्थित है।

CmdJava -version में चलने पर , यह संस्करण को '1.6.xx' के रूप में दिखाता है। अपनी मशीन पर इस एसडीके के स्थान को खोजने के लिए मैंने उपयोग करने की कोशिश की, लेकिन यह केवल 'JAVA_HOME' दिखा रहा है (जैसा कि मेरे पर्यावरण चर में कोई 'JAVA_PATH' संस्करण सेट नहीं है)।echo %JAVA_HOME%


1
दुर्भाग्य से, मुझे लगता है कि नीचे दिए गए कुछ जवाब काम नहीं कर सकते हैं क्योंकि जाहिरा तौर पर जावा के हाल के संस्करणों के साथ कुछ बदल गया है। आज मैंने 7.60 जावा एसडीके संस्करण डाउनलोड किया। कुछ खोज के बाद, इसे C: \ Program Files (x86) \ Java \ jdk1.7.0_60 पर मिला। एक पुराना संस्करण 6 JRE पहले से ही स्थापित था। यह C: \ Program Files \ Java में था और यह% PATH% पर था नया इंस्टॉल नहीं।
likejudo

1
सबसे अच्छा जवाब नीचे है, पॉवरशेल के लिए मेजकिनटोर से एक-लाइनर: $ p = 'HKLM: \ SOFTWARE \ JavaSoft \ Java डेवलपमेंट किट'; $ v = (gp $ p) (gp $ p / $ v) .JavaHome
JohnP2

एक और बात, अगर आपका jdk intellij idea से बंडल था, तो यह आइडिया इंस्टॉलेशन के पास कहीं हो सकता है। मेरे लिए यह विचार फ़ोल्डर से 1 डायरेक्टरी में था, और PATH वैरिएबल ने प्रोग्राम फाइल्स में एक jre को इंगित किया
KGS

जवाबों:


329

यदि आप लिनक्स / यूनिक्स / मैक ओएस एक्स का उपयोग कर रहे हैं:

इसे इस्तेमाल करे:

$ which java

सटीक स्थान का उत्पादन करना चाहिए।

उसके बाद, आप JAVA_HOMEस्वयं पर्यावरण चर सेट कर सकते हैं ।

मेरे कंप्यूटर में (Mac OS X - स्नो लेपर्ड):

$ 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

यदि आप विंडोज का उपयोग कर रहे हैं:

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

दरअसल, फॉर्म VAR_NAME% विंडोज
sblundy

1
लिनक्स / यूनिक्स / मैक ओएस एक्स और विंडोज उदाहरणों के साथ उत्तर अपडेट करें ।
पाब्लो सांता क्रूज़

125
where javaविंडोज में काम करता है (कम से कम विंडोज 7 के रूप में) लेकिन अगर आप वास्तव में एक JDK चाहते हैं और एक JRE नहीं है तो आपको 'Bin / javac /
जॉन स्ट्रायर

जहां java पूरा रास्ता नहीं देता है अगर java.exe पाथ पर है, जबकि पाब्लो के लिए ... समाधान ऐसा करता है जो बेहतर है।
रिचर्ड जॉनसन

1
MacOS वन-लाइनर:ls -l $(which java) | awk '{print $11}'
msanford

111

Windows> प्रारंभ> cmd>

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

यदि आपके पास JDK स्थापित है, तो पथ प्रदर्शित होता है,
उदाहरण के लिए:C:\Program Files\Java\jdk1.6.0_30\bin\javac.exe


16
विंडोज (7+) => जहां javac.exe
hB0

6
खिड़कियों में यह है, जहां जावा
पाबित्रा डैश

10
where javaकेवल तभी काम करता है जब निष्पादन योग्य पथ में हो। यदि किसी भी कारण से, जेवैक रास्ते में नहीं है, तो यह किसी भी परिणाम को वापस नहीं करेगा, लेकिन इसका मतलब यह नहीं है कि जेडडीके स्थापित नहीं है। तो सामान्य स्थिति में, @grokster समाधान द्वारा प्रस्तावित फ़ाइल खोज समाधान एक परिणाम की गारंटी देगा (विचार पूरा होने में समय लग सकता है)।
निकिता जी।

हालाँकि, 'for-loop' सामान काम नहीं करता था, फिर भी मैंने इसे यहाँ पाया: C: \ Program Files (x86) \ Java \ jdk1.6.0_24 \ bin>
AjayKumarBasuthkar

ध्यान दें कि यदि आप इसका अनुसरण कर रहे हैं ( codelabs.developers.google.com/codelabs/… एंड्रॉइड स्टूडियो का उपयोग करने के लिए ) ट्यूटोरियल का , तो वास्तविक रास्ता वह नहीं होगा जो ऊपर दिए गए कमांड द्वारा दिया गया है। सबसे अधिक संभावना है, आपके पास कुछ होगा जैसे "C: \\ Program Files \ Java | <jdk>" जहां "jdk" के बजाय आपके पास JDK संस्करण 10 के लिए "jdk-10.0.1" जैसा कुछ होगा।
Euler_Slter

96

विंडोज में कमांड प्रॉम्प्ट पर

where javac


8
खिड़कियों में यह है, जहां जावा
पाबित्रा डैश

7
ध्यान दें, यह केवल तभी काम करता है जब जेएटीएच पाथ में हो। यदि यह नहीं है, तो यह कमांड कहेगा कि यह नहीं मिला है, लेकिन जेडीके अभी भी स्थापित किया जा सकता है। यदि JDK स्थापना के बाद आपको अपडेट नहीं किया गया है, तो अन्य विधियों का उपयोग करें।
निकिता जी।

1
क्या अन्य तरीके? आपने % के लिए (javac.exe) do @echo का उपयोग करने का उल्लेख किया है % ~ $ PATH: i , लेकिन जैसा कि आपने लिखा है, यदि आप इसे PATH में सेट नहीं करते हैं तो यह काम नहीं करेगा।
निमरोड

30

विंडोज़ में डिफ़ॉल्ट है: C:\Program Files\Java\jdk1.6.0_14(जहां वे संस्करण भिन्न हो सकते हैं, जैसा कि वे संस्करण हैं)।


आप भिन्न संस्करण संख्या कैसे प्राप्त करेंगे?
एलजेडयू

बस अपने एक्सप्लोरर से स्थान पर नेविगेट करें, और आप स्थापित किए गए jdk फ़ोल्डर संस्करण देखेंगे।
अहानिबेकाड

26

जावा इंस्टॉलर कई फाइलें% WinDir% \ System32 फ़ोल्डर (java.exe, javaws..exe और कुछ अन्य) में डालता है। जब आप java.exe को कमांड लाइन में टाइप करते हैं या बिना पूर्ण पथ के प्रक्रिया बनाते हैं, तो Windows इन्हें अंतिम उपाय के रूप में चलाता है यदि वे% PATH3 फोल्डर में गायब हैं।

आप रजिस्ट्री में स्थापित जावा के सभी संस्करणों को देख सकते हैं। 64 बिट विंडोज पर 32-बिट जावा के लिए HKLM \ SOFTWARE \ JavaSoft \ Java रनटाइम एन्वायरमेंट और HKLM \ SOFTWARE \ Wow6432Node \ JavaSoft \ Java रनटाइम एनवायरनमेंट पर एक नज़र डालें।

इस तरह जावा अपने आप में स्थापित विभिन्न संस्करणों का पता लगा लेता है। और यही कारण है कि दोनों 32-बिट और 64-बिट संस्करण सह-अस्तित्व में हैं और हस्तक्षेप किए बिना ठीक काम कर सकते हैं।


23

विंडोज प्लेटफार्मों पर सादा और सरल:

कहाँ जावा


8
इसका परिणाम गलत जावा स्थान C: \ WINDOWS \ System32 \ java.exe है। लेकिन वास्तविक jdk C: \ Java \ jdk1.7.0 \ (जैसे JAVA_HOME सेट है) पर स्थापित है
हिमांशु भारद्वाज

17

नीचे दी गई बैच स्क्रिप्ट मौजूदा डिफ़ॉल्ट JRE का प्रिंट आउट लेगी। जावा डेवलपमेंट किट के साथ जावा रनटाइम एनवायरमेंट को बदलकर स्थापित किए गए JDK संस्करण को खोजने के लिए इसे आसानी से संशोधित किया जा सकता है ।

@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

विंडोज 10 पर आप कंट्रोल पैनल> जावा पर जाकर पा सकते हैं। नीचे दिखाए गए पैनल में, आप नीचे स्क्रीनशॉट में दिखाए अनुसार पथ पा सकते हैं। जावा कंट्रोल पैनल में, 'जावा' टैब पर जाएं और फिर विवरण के तहत 'व्यू' बटन पर क्लिक करें और जावा अनुप्रयोगों और एप्लेट्स के लिए जावा रनटाइम संस्करणों और सेटिंग्स को देखें। '

यह विंडोज 7 और संभवतः विंडोज के अन्य हाल के संस्करणों पर काम करना चाहिए।

यहां छवि विवरण दर्ज करें


मैं विंडोज़ 10 पर हूँ और नियंत्रण कक्ष में कोई जावा नहीं है
लैंग रिएक्ट देव

1
क्या आप सुनिश्चित हैं कि जावा स्थापित है और यह विंडोज़ इंस्टॉलेशन पैकेज का उपयोग करके स्थापित किया गया था?
smartexpert

आप अपने खाते और सिस्टम के वातावरण चर को देखकर यह जानने की कोशिश कर सकते हैं कि जावा कहाँ स्थापित हो सकता है, javacpl.exe की खोज करें
smartexpert

12

Windows कमांड प्रॉम्प्ट में, बस टाइप करें:

set java_home

या, यदि आपको कमांड वातावरण पसंद नहीं है, तो आप इसे यहाँ से देख सकते हैं:

प्रारंभ मेनू> कंप्यूटर> सिस्टम गुण> उन्नत सिस्टम गुण। फिर उन्नत टैब खोलें> पर्यावरण चर और सिस्टम चर में JAVA_HOME खोजने का प्रयास करें।

यहां छवि विवरण दर्ज करें


यह मुझे jdk फोल्डर देता है। जब मैं एक Scala Worksheet में System.getProperty ("java.home") चलाता हूं, तो यह मुझे jre सबफ़ोल्डर देता है। जावा होम के बारे में स्पष्ट रूप से कुछ अस्पष्टता है।
आयन फ्रीमैन

11

विंडोज के तहत, आप उपयोग कर सकते हैं

C:>dir /b /s java.exe

अपने C: ड्राइव पर हर "java.exe" का पूरा पथ प्रिंट करने के लिए, चाहे वे आपके PATH पर्यावरण चर पर हों।


10

विंडोज पर अधिक ... चर java.home हमेशा बाइनरी के रूप में एक ही स्थान नहीं है जो चलाया जाता है।

डेनिस खतरा कहते हैं, संस्थापक कहते हैं जावा में फ़ाइलों को प्रोग्राम फ़ाइलें , लेकिन यह भी java.exe में System32जावा जावा पथ पर संबंधित कुछ भी नहीं के साथ अभी भी काम कर सकते हैं। हालाँकि जब पीटरमम के कार्यक्रम को चलाया जाता है, तो यह प्रोग्राम फाइल्स के मान को java.home के रूप में रिपोर्ट करता है , यह गलत नहीं है (जावा वहां स्थापित है) लेकिन वास्तविक बाइनरी चलाया जा रहा है जो System32 में स्थित है ।

Java.exe बाइनरी के स्थान का शिकार करने का एक तरीका , प्रोग्राम को कुछ समय के लिए चालू रखने के लिए पीटरमम के कोड में निम्नलिखित पंक्ति जोड़ें:

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

संकलित करें और इसे चलाएं, फिर java.exe छवि के स्थान का शिकार करें। उदाहरण के लिए विंडोज 7 में टास्क मैनेजर खोलें, java.exe प्रविष्टि ढूंढें , राइट क्लिक करें और 'ओपन फाइल लोकेशन' चुनें, यह जावा बाइनरी का सटीक स्थान खोलता है। इस मामले में यह System32 होगा ।


9

इस प्रोग्राम को कमांडलाइन से चलाएं:

// 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
वह पहले यह संकलन नहीं होता?
इरविन

2
अगर यह स्थापित है और पथ पर पहले एक JRE मिलेगा।
जॉन स्ट्रायर


6

क्या आपने अपने% PATH% चर को देखने की कोशिश की है। यही विंडोज किसी भी निष्पादन योग्य को खोजने के लिए उपयोग करता है।


हां। Echo %PATH%. मेरा c:\Program Files\Javaविंडोज 7 पर लगता है
मार्क इरविन

5

बस setअपने कमांड लाइन में कमांड निष्पादित करें । फिर आप अपने द्वारा सेट किए गए सभी वातावरण चर को देखते हैं।

या अगर यूनिक्स पर आप इसे सरल बना सकते हैं:

$ set | grep "JAVA_HOME" 

धन्यवाद Roflcoptr, यह 'सेट' के बारे में जानने के लिए वास्तव में उपयोगी था। मेरे सिस्टम में इसकी चर के लिए दो प्रविष्टियाँ दिखाई दे रही हैं, मैं गलत को कैसे हटा सकता हूँ।
१६:११

3

यह ओएस विशिष्ट है। यूनिक्स पर:

which java

निष्पादन योग्य के लिए पथ प्रदर्शित करेगा। मैं एक विंडोज के बराबर नहीं जानता, लेकिन वहां आपके पास आमतौर पर binसिस्टम में JDK इंस्टॉलेशन का फोल्डर होता है PATH:

echo %PATH%

मैं भी वह जवाब देने वाला था, लेकिन वह स्पष्ट रूप से एक विंडोज़ जवाब की तलाश में है।
डॉन ब्रैनसन

@DonBranson उन्होंने इस पोस्ट को सबमिट करने के बाद विंडोज को शामिल करने के लिए टेक्स्ट को बदल दिया।
EntangledLoops

2

यदि आप घर की तलाश कर रहे हैं तो इनमें से कोई भी जवाब लिनक्स के लिए सही नहीं है, जिसमें सबडिर्स शामिल हैं जैसे: बिन, डॉक्स, शामिल, jre, lib, आदि।

Openjdk1.8.0 के लिए Ubuntu पर, यह इस प्रकार है: /usr/lib/jvm/java-1.8.0-openjdk-amd64

और JAVA_HOMEयदि आप जेएनआई स्रोत फ़ाइलों का निर्माण करते हैं तो आप हेडर ढूंढने में सक्षम होंगे। जबकि यह सच which javaहै बाइनरी पथ प्रदान करेगा, यह सही JDK घर नहीं है।


1

MacOS पर, चलाएं:

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

मेरी मशीन पर, यह प्रिंट करता है:

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

ध्यान दें कि रनिंग which javaJDK स्थान को नहीं दिखाता है, क्योंकि javaकमांड इसके बजाय का हिस्सा है JavaVM.framework, जो वास्तविक 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


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

विंडोज के लिए:

@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

यह लिंक यह समझाने में मदद कर सकता है कि bash से java निष्पादन योग्य कैसे खोजें: http://srcode.org/2014/05/07/detect-java-executable/


1
हालांकि यह लिंक प्रश्न का उत्तर दे सकता है, लेकिन उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर है। लिंक-केवल उत्तर अमान्य हो सकते हैं यदि लिंक किए गए पृष्ठ बदल जाते हैं।
शालीन इस्लाम

1
धन्यवाद @ShaifulIslam, आपकी बात सही है। मैंने लिंक से कोड जोड़ा।
कियान चेन

0

यदि आवश्यक हो तो मैंने 64-बिट और 32-बिट रजिस्ट्रियों में रजिस्ट्री कुंजी के लिए परीक्षण करके मुनसिंह के उत्तर में सुधार किया है :

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

64-बिट रजिस्ट्री तक पहुंच के लिए संदर्भ


0

32/64 बिट विंडोज के लिए स्क्रिप्ट।

@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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.