메이쁘

[Java] Eclipse run 시 발생하는 java.lang.UnsupportedClassVersionError 이유 및 해결방법 본문

Technology/그 외

[Java] Eclipse run 시 발생하는 java.lang.UnsupportedClassVersionError 이유 및 해결방법

메이쁘 2021. 9. 14. 15:54

안녕하세요.

 

다른 PC에서 작업하고 git에 올려둔 프로젝트를 다른 PC에서 땡겨와 실행하려하니 해당 오류가 발생했습니다.


-> Exception in thread "main" java.lang.UnsupportedClassVersionError: interfaceSample/Sample has been compiled by a more recent version of the Java Runtime (class file version 59.0), this version of the Java Runtime only recognizes class file versions up to 52.0


결론부터 말씀드리자면, 현재 PC에서 사용하고있는 JDK 버전이 이전 PC에서 만들고 사용했던 JDK버전보다 낮기 때문에 해당 프로젝트의 기본 class file(바이트코드)들을 버전 차이로 읽을 수 없다는 뜻입니다.

 

흠.. 답은 뭐.. 버전에 맞는 JDK를 설치해서 환경설정 적용하면 되겠죠.

 

저희가 평소 활용하던 버전과는 숫자가 많이 다른데요.

 

oracle 공식 홈페이지가면 대응되는 자바 버전을 표로 정리한 것이 있어 이를 참고해서 맞는 버전의 jdk를 설치하신 후

 

https://docs.oracle.com/javase/specs/jvms/se15/html/jvms-4.html

 

해당 프로젝트의 properties -> java build path -> libraries 에서 add Libraries -> JRE Systems 로 추가하시면 됩니다.

 

 

만약 새로 설치한 jdk가 뜨지 않다면?

 

여기서! 새로 다운받은 JDK 버전을 적용시키기 위해

Window -> Preferences -> Java -> Installed JREs에 들어갑니다.

 

1 ~ 3 순서대로 진행하는데요.

 

1) Add를 클릭해서 Standard VM을 선택한 후

 

2) Directory를 클릭해서 아까 설치한 JDK 폴더 경로를 넣습니다.

(보통, C:\Program Files\Java\jdk15 와 같이 Java 폴더 안에 담겨있습니다.)

 

*** JRE를 추가하는데 JDK를 넣어도 되는 이유는, JDK 안에 JRE가 담겨있기 때문입니다.

JDK >>> JRE >>> JVM

 

3) Finish를 누른 후 추가한 JRE로 Apply해주면 됩니다!

 

 

 

아니면 Run -> Run Configurations -> JRE 탭을 클릭하시면

위와 같이 오류메세지에 15라고 필요한 자바 버전을 알려줍니다.

 

 

 

 

정리하자면, 이러한 UnsupportedClassVersionError 가 발생한 이유는

프로젝트의 java file을 class file로 컴파일하기 위해 사용한 Javac 컴파일러의 버전(JDK) 이 현재 가지고 있는 JDK 버전으로는 버전이 낮아 읽을 수 없기 때문입니다.

 

이를 해결하기 위해선 저희 PC IDE(이클립스)에 적용된 JVM의 버전을 바꾸면 되겠죠?

 

 

 

 

이상입니다.

 

감사합니다!

 

 

Comments