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 버전만 변경해주면 해결이 가능하다.
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을 바꿔야 되면 해당 방식으로 버전을 바꾸면 될 것 같다.