springBoot - java.lang.UnsupportedClassVersionError [Window]

Denia·2023년 12월 22일
0

TroubleShooting

목록 보기
8/25

spring boot를 build 하면 jar 파일이 나오게 되고, java -jar 파일.java 를 하게 되면 실행이 된다.

실행을 했더니 해당 이슈를 만나게 되었다.

java.lang.UnsupportedClassVersionError: org/springframework/boot/loader/launch/JarLauncher has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 55.0

내용을 조금 더 살펴보면 spring 요구 java 버전이랑 내 컴퓨터에서 사용하는 java 버전이 맞지 않다는 것 같다.

version 숫자가 어떤 것을 의미하는지 찾아보니 다음과 같았다.

45 = Java 1.1
46 = Java 1.2
47 = Java 1.3
48 = Java 1.4
49 = Java 5
50 = Java 6
51 = Java 7
52 = Java 8
53 = Java 9
54 = Java 10
55 = Java 11
56 = Java 12
57 = Java 13
58 = Java 14
59 = Java 15
60 = Java 16
61 = Java 17
62 = Java 18
63 = Java 19
64 = Java 20
65 = Java 21
66 = Java 22

출처 : How to Fix java.lang.UnsupportedClassVersionError

즉 spring은 61 (Java 17) 을 사용해야 하는데 내 컴퓨터는 55 (Java 11)을 사용하고 있다는 것이다.
-> 그러므로 Java 버전만 변경해주면 해결이 가능하다.

그런데 나는 컴퓨터에 Java 8, 11, 17, 21 모두 다 깔려있는데 왜 11로 인식을 하는 것 일까 ?

Terminal에서 java -version 을 쳤더니 openjdk version "11.0.21" 2023-10-17 LTS 이 나왔다.

그럼 역시나 11로 인식을 하고 있다는 것이고, 11로 인식을 하기 때문에 jar 파일을 실행시킬 수가 없었다.

환경 변수 확인하기

시스템 환경 변수 편집에 들어가서 환경변수 - 시스템 변수 - path 변수를 확인하니 다음과 같이 나왔다.

정확하게 내가 해당 버전들을 설치한 순서의 역순이었다. (내가 8, 17, 21 버전을 순서대로 깔고 추후에 11 버전을 깔았다)

아무래도 맨 위에 있어서 해당 버전으로 인식을 하는 것 같아서 다음과 같이 순서를 변경했다.

그랬더니 java version이 17로 인식을 했다.

path 변수에서 맨 위에 존재하는 Java의 버전으로 java version이 결정되는 것 같다.
나중에 java version을 바꿔야 되면 해당 방식으로 버전을 바꾸면 될 것 같다.

profile
HW -> FW -> Web

0개의 댓글