Windows 시스템에서 JDK가 설치된 위치를 어떻게 찾을 수 있습니까?
내 컴퓨터에서 JDK가 어디에 있는지 알아야합니다.
실행에 Java -version
에 cmd를 , 그것은 '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 Environment 를 Java 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.exe 는 System32에 넣습니다 . 경로와 관련된 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_HOME
JNI 소스 파일을 빌드하면 헤더를 찾을 수 있기 때문에 이를 사용하는 것이 좋습니다 . 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%"
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
'IT' 카테고리의 다른 글
Office VBA 편집기에서 코드 블록 주석 처리 및 주석 해제 방법 (0) | 2020.03.20 |
---|---|
Git을 사용하여 커밋 ID를 기반으로 특정 커밋으로 되 돌리시겠습니까? (0) | 2020.03.20 |
main이 유효한 Java 식별자입니까? (0) | 2020.03.20 |
'ImportError : 가져올 수없는 이름 IncompleteRead'는 어떻게 수정합니까? (0) | 2020.03.20 |
Java에서 쌍 또는 2 개의 튜플 사용 (0) | 2020.03.20 |