Windows

Windows 에 설치 된 JRE 설치 위치 확인 하기.

by 성진 posted May 28, 2015
CUBRID에서 Java sp를 사용하기 위해서는 JRE가 설치 되어 있어야 한다.

CUBRID 매뉴얼에서는 다음과 같이 설명한다.
http://www.cubrid.org/manual/93/ko/sql/jsp.html#windows

CUBRID는 Windows 환경에서 jvm.dll 파일을 로딩하여 Java 가상 머신을 실행시킨다. 
1) CUBRID는 먼저 시스템의 Path 환경 변수에서 jvm.dll 을 찾아 로딩한다. 
2) 만약 찾지 못하면 시스템 레지스트리에 등록된 Java 런타임 정보를 이용한다.

위의 1), 2)에서 jvm.dll을 못 찾을 경우
Java VM library is not found: jvm.dll.
의 에러가 발생 한다.

이때는 설치 된 JRE의 어떤 버전을 이용하는지 확인이 필요할 때가 있다.

레지스트리 검색 순서는

64Bit의 경우
HKEY_LOCAL_MACHINESoftwareJavaSoft
HKEY_LOCAL_MACHINEWow6432NodeJavaSoft

순으로 찾게 되며

32Bit의 경우
HKEY_LOCAL_MACHINESoftwareJavaSoft
에서 찾는다.

또한 JRE/JDK가 둘다 설치 된 경우에는
JavaSoftJava Runtime Environment
JavaSoftJava Development Kit

순으로 찾는다.

따라서 간단하게 현재 OS의 레지스트리에서 JRE 버전을 찾는 스크립트를
다음과 같이 생성 할 수 있다.

 
@ECHO off

SET KIT=JavaSoftJava Runtime Environment
call:ReadRegValue VER "HKLMSoftware%KIT%" "CurrentVersion"
IF "%VER%" NEQ "" GOTO FoundJRE

SET KIT=Wow6432NodeJavaSoftJava Runtime Environment
call:ReadRegValue VER "HKLMSoftware%KIT%" "CurrentVersion"
IF "%VER%" NEQ "" GOTO FoundJRE


SET KIT=JavaSoftJava Development Kit
call:ReadRegValue VER "HKLMSoftware%KIT%" "CurrentVersion"
IF "%VER%" NEQ "" GOTO FoundJRE

SET KIT=Wow6432NodeJavaSoftJava Development Kit
call:ReadRegValue VER "HKLMSoftware%KIT%" "CurrentVersion"
IF "%VER%" NEQ "" GOTO FoundJRE

ECHO Failed to find Java
GOTO :EOF

:FoundJRE
call:ReadRegValue JAVAPATH "HKLMSoftware%KIT%%VER%" "JavaHome"
ECHO %JAVAPATH%
GOTO :EOF

:ReadRegValue
SET key=%2%
SET name=%3%
SET "%~1="
SET reg=reg
IF DEFINED ProgramFiles(x86) (
  IF EXIST %WINDIR%sysnativereg.exe SET reg=%WINDIR%sysnativereg.exe
)
FOR /F "usebackq tokens=3* skip=1" %%A IN (`%reg% QUERY %key% /v %name% 2^>NUL`) DO SET "%~1=%%A %%B"dls

실행 결과는 다음과 같다.
cub_jre_chek.bat
C:Program FilesJavajre1.8.0_45

이를 이용해서 내가 이용하고자 하는 JRE 버전이 맞는 것인지 다시 한번 확인 해 보자.

Articles

3 4 5 6 7 8 9