본문 바로가기

Web

[Web]JRE(JDK) 버전 오류, JRE(JDK) 버전 변경, jre unbound, JNI error has occurred, JDK JRE JVM

 

 

먼저 jdk와 jre의 개념이 헷갈릴 수 있으므로 간단한 도식을 통해 관계를 이해합니다.
JDK가 가장 큰 상위 개념이자 포괄적이고, 그 안에 jre와 jvm이 있음을 알 수 있습니다.


JDK는 자바 개발도구(Java Development Kit)의 약자입니다. 자바 언어로 소프트웨어를 개발할 때 필요한 환경 및 도구를 제공하는 역할을 합니다.
JRE는 자바 실행환경(Java Runtime Environment)의 약자입니다.
JVM자바 가상머신(Java Virtual Machine)의 약자입니다.

 

Error.A JNI error has occurred, please check your installation and try again.

해당 오류 창이 떴을 때의 해결방법입니다. 제 경우, 프로젝트에서 요구하는 jre버전(JAVA SE)과 이클립스 전체에서 기본(default)으로 설정해놓은 jre버전과 맞지 않아서 충돌하게 되었습니다.

이럴 경우 특정 프로젝트의 jdk 버전을 낮추거나 높이면 되는데, 해당 포스팅은 jdk버전을 낮추는 쪽으로 내용을 전개합니다. (대개는 jdk 버전을 높이는 쪽으로 해결해야 할 상황이 많을 것으로 예측합니다. 방법은 똑같습니다.)

 

[Build Path] -> [Configure Build Path ... ]로 설정

chap02 프로젝트에 느낌표가 붙어 있는 것을 확인할 수 있습니다. Build Path에서 문제가 생겼을 때 이 느낌표 아이콘이 뜨곤 합니다.

chap02 프로젝트 우클릭 -> [Build Path] -> [Configure Build Path...] 클릭합니다.

Order and Export탭에서 JRE[JAVA SE-10] 버전이 맞지 않는 것 확인

보면 해당 프로젝트에서 요구되는 JAVA SE버전은 10인데 unbound 되었다는 메시지를 확인할 수 있습니다.
chap02 프로젝트에서는 JAVA SE10 이상의 버전의 jre를 요구하나 봅니다.

버전이 맞지 않는 JRE System Library[JAVA SE-10]를 요구하므로 기존의 JRE System Library를 [클릭]한 다음 [Remove]로 삭제해줍니다.

삭제한 대신 새로운 Library를 추가합니다.
[Add Library] -> [JRE System Library] -> [Next>] 클릭합니다.

기본적으로 설정된 default JRE는 버전이 1.8.0_301입니다. 해당 체크박스를 클릭한 다음 [Finish]를 클릭합니다.
(참고로 default JRE를 설정하는 방법은 아래 [Window]-[Preferences]-[Compiler]창을 통해서 설정할 수 있습니다.)

Libraries에 JRE System Library[jre 1.8.0_301]이 추가되었습니다. [Apply]를 눌러줍니다.

 

[Window]-[Preferences]에서 설정

[Window] -> [Preferences] 를 클릭합니다.

compiler 쪽을 가서 [Configure Project Specific Settings]를 클릭합니다.
위 사진에서 보이는 JDK Compilance는 전체 프로젝트에 공용적으로(기본적) 설정된 jdk버전이라고 보면 됩니다.

[Configure Project Specific Settings]는 '특정한 프로젝트별 설정'이라고 보면 됩니다.

아직 제 이클립스에는 chap02만 있으므로 chap02만 띄워집니다.
원하는 프로젝트를 선택한 다음 [OK버튼]을 클릭합니다.

OK버튼을 누르면 Properties for chap02(Filtered) 창이 뜨는데, 
위에서 본 바와 같이 JDK Compilance로 JDK버전을 설정할 수 있는 창이 뜹니다. 다만, 바로 위 사진의 창은 chap02 프로젝트를 위한 특정 프로젝트용 설정창입니다.

Properties for chap02창에서 설정된 JDK Compiler Compliance Level은 10입니다. 하지만 기본적(default)으로 설정한 jdk버전은 1.8이었습니다. 즉, 특정 프로젝트가 더 높은 jdk버전을 요구하기 때문에 버전 호환이 안됐습니다.
chap02 프로젝트가 요구하는 jdk 버전을 1.8로 낮추겠습니다. 동시에 [Enable project specific settins]의 체크박스를 클릭합니다. [Apply]로 적용합니다.

이와 같이 오류(빨간 줄)없이 뜨는 것을 확인할 수 있습니다.