IT

Windows 시스템에서 JDK가 설치된 위치를 어떻게 찾을 수 있습니까?

lottoking 2020. 3. 20. 08:31
반응형

Windows 시스템에서 JDK가 설치된 위치를 어떻게 찾을 수 있습니까?


내 컴퓨터에서 JDK가 어디에 있는지 알아야합니다.

실행에 Java -versioncmd를 , 그것은 '1.6.xx'와 같은 버전을 보여줍니다. 내 컴퓨터 에서이 SDK의 위치를 ​​찾으려면 사용 echo %JAVA_HOME%했지만 'JAVA_HOME'만 표시됩니다 (환경 변수에 'JAVA_PATH'변수가 설정되어 있지 않기 때문에).


Linux / Unix / Mac OS X를 사용하는 경우 :

이 시도:

$ which java

정확한 위치를 출력해야합니다.

그 후 JAVA_HOME환경 변수를 직접 설정할 수 있습니다 .

내 컴퓨터 (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를 사용하는 경우 :

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

Windows> 시작> cmd>

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

JDK가 설치된 경우 경로는 다음과 같이 표시됩니다
.C:\Program Files\Java\jdk1.6.0_30\bin\javac.exe


Windows의 명령 프롬프트에서

where javac


Windows에서 기본값은 다음과 같습니다 C:\Program Files\Java\jdk1.6.0_14(숫자 버전이므로 숫자가 다를 수 있음).


Java 설치 프로그램은 여러 파일을 % WinDir % \ System32 폴더 (java.exe, javaws.exe 및 기타 파일)에 저장합니다. 명령 행에 java.exe를 입력하거나 전체 경로없이 프로세스를 작성할 때 Windows는 % PATH % 폴더에 누락 된 경우이를 최후 수단으로 실행합니다.

레지스트리에 설치된 모든 Java 버전을 조회 할 수 있습니다. 64 비트 Windows에서 HKLM \ SOFTWARE \ JavaSoft \ Java Runtime Environment 및 HKLM \ SOFTWARE \ Wow6432Node \ JavaSoft \ Java Runtime Environment를 32 비트 Java에서 살펴보십시오.

이것은 자바 자체가 설치된 다른 버전을 찾는 방법입니다. 그리고 이것이 32 비트와 64 비트 버전이 공존 할 수 있고 방해하지 않고 잘 작동하는 이유입니다.


Windows 플랫폼에서 간단하고 간단합니다.

어디서 자바


아래의 배치 스크립트는 기존 기본 JRE를 인쇄합니다. Java Runtime EnvironmentJava Development Kit 로 교체하여 설치된 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

Windows 10에서는 제어판> Java로 이동하여 경로를 찾을 수 있습니다. 표시되는 패널에서 아래 스크린 샷에 표시된대로 경로를 찾을 수 있습니다. Java 제어판에서 'Java'탭으로 이동 한 다음 'Java 응용 프로그램 및 애플릿의 Java 런타임 버전 및 설정보기 및 관리'설명에서 '보기'단추를 클릭하십시오.

이것은 Windows 7 및 기타 최신 버전의 Windows에서 작동합니다.

여기에 이미지 설명을 입력하십시오


Windows 명령 프롬프트에서 다음을 입력하십시오.

set java_home

또는 명령 환경이 마음에 들지 않으면 다음에서 확인할 수 있습니다.

시작 메뉴> 컴퓨터> 시스템 속성> 고급 시스템 속성 그런 다음 고급 탭> 환경 변수를 열고 시스템 변수에서 JAVA_HOME을 찾으십시오.

여기에 이미지 설명을 입력하십시오


Windows에 대한 추가 정보 ... 변수 java.home 이 실행되는 바이너리와 항상 동일한 위치에있는 것은 아닙니다.

Denis The Menace가 말했듯이 설치 프로그램은 Java 파일을 Program Files에 넣지 java.exeSystem32에 넣습니다 . 경로와 관련된 Java가 없으면 java -version 은 여전히 ​​작동합니다. 그러나 PeterMmm의 프로그램이 실행될 때 Program Files 의 값을 java.home 으로 보고 하지만 이는 잘못된 것이 아니며 (Java가 설치되어 있음) 실제 실행중인 바이너리는 System32에 있습니다.

java.exe 바이너리 의 위치를 ​​찾는 방법 중 하나 는 PeterMmm의 코드에 다음 줄을 추가하여 프로그램을 더 오래 실행하는 것입니다.

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

컴파일하고 실행 한 다음 java.exe 이미지 의 위치를 찾으십시오 . 예를 들어 Windows 7에서 작업 관리자를 열고 java.exe 항목을 찾은 다음 마우스 오른쪽 버튼을 클릭하고 '파일 위치 열기'를 선택하면 Java 바이너리의 정확한 위치가 열립니다. 이 경우 System32 입니다.


명령 행에서이 프로그램을 실행하십시오.

// File: Main.java
public class Main {

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

}


$ javac Main.java
$ java Main

Windows에서는 다음을 사용할 수 있습니다

C:>dir /b /s java.exe

PATH 환경 변수에 관계없이 C : 드라이브에있는 모든 "java.exe"의 전체 경로를 인쇄합니다.


Powershell 원 라이너 :

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

% PATH % 변수를 보셨습니까? 그것이 Windows가 실행 파일을 찾기 위해 사용하는 것입니다.


set명령 행에서 명령을 실행하십시오 . 그런 다음 설정 한 모든 환경 변수가 표시됩니다.

또는 유닉스에서는 다음과 같이 단순화 할 수 있습니다.

$ set | grep "JAVA_HOME" 

이것은 OS마다 다릅니다. 유닉스에서 :

which java

실행 파일의 경로를 표시합니다. Windows에 해당하는 것을 모르지만 일반적으로 bin시스템에 JDK 설치 폴더가 있습니다 PATH.

echo %PATH%

bin, docs, include, jre, lib 등과 같은 하위 디렉토리를 포함하는 홈을 찾는 경우 Linux에 대한 올바른 답변은 없습니다.

openjdk1.8.0의 우분투에서 이것은 다음과 같습니다. /usr/lib/jvm/java-1.8.0-openjdk-amd64

JAVA_HOMEJNI 소스 파일을 빌드하면 헤더를 찾을 수 있기 때문에 이를 사용하는 것이 좋습니다 . which java이진 경로를 제공 하는 것이 사실이지만 , 진정한 JDK 홈은 아닙니다.


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

running which java은 JDK 위치를 표시하지 않습니다. 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

Windows cmd에서 :

set "JAVA_HOME" 

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


필요한 경우 64 비트 및 32 비트 레지스트리에서 레지스트리 키를 테스트하여 위의 munsingh 의 답변 을 개선 했습니다 .

::- 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 비트 레지스트리에 액세스하기위한 참조


32/64 비트 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

참고 : https://stackoverflow.com/questions/4681090/how-do-i-find-where-jdk-is-installed-on-my-windows-machine

반응형