Spring Boot 사용 오류: "Exception in thread "main" java.lang.UnsupportedClassVersionError"

Jang990·2023년 3월 9일
0

오류 상황

새로운 프로젝트를 스프링 부트 3.0.4 버전으로 만들어서 실행을 하니 다음과 같은 오류가 발생했습니다.

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/springframework/boot/SpringApplication 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 60.0
	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1010)
	at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
	at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:855)
	at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:753)
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:676)
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:634)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
	at com.example.demo.SpringVueApplication.main(SpringVueApplication.java:10)

발생 이유

Spring 6버전과 Spring Boot 3버전부터는 Java 17기반으로 변경되었습니다.
저의 PC에 설치되어 있는 JDK는 16이기 때문에 해당 오류가 발생하게 되었습니다.

SpringBoot 2.X -> 3.X
Spring 5.X -> 6.X
이외에도 위와 같이 버전이 바뀌면서 달라지는 점이 많은데 궁금한 부분은 다음 글을 참고해주세요.
[Spring] Spring 6.0 과 Spring Boot 3.0에는 뭐가 달라질까 - tistory


해결 방법

저의 PC에 설치되어 있는 JDK는 16이기 때문에 해결 방법은 2가지가 있습니다.

  1. Spring Boot의 버전을 2로 낮춘다.
  2. JDK 17을 설치하고 설정해준다.

방법 1: Spring Boot의 버전을 2로 낮춘다.

Spring Boot 2.X에서 주의할 점은 JDK 8 이상의 JDK가 PC에 설치되어 있어야 합니다.

현재 저의 프로젝트는 maven을 사용하고 있기 때문에 maven 기반으로 설명을 드리겠습니다. 만약 gradle을 사용하신다면 다음 글을 참고해주세요.
[SpringBoot] 스프링부트 버전 변경 / 버전 다운그레이드

pom.xml로 들어가서 spring boot와 java 버전을 변경해 줍니다.

java는 16을 사용하고 spring boot의 버전은 2.7.3을 사용하도록 변경했습니다.

이제 프로젝트를 업데이트하고 시작하면 정상 작동하는 것을 확인할 수 있습니다.


방법 2: JDK 17을 설치하고 설정해준다.

  1. 다음 링크를 통해서 JDK 17을 설치합니다.
    https://www.oracle.com/java/technologies/downloads/#jdk17-windows

  2. JDK 17을 설치한 bin 폴더로 환경 변수를 설정합니다.

JDK 설정 방법을 모르신다면 다음 링크를 통해서 자세한 내용을 확인해보세요.
[Java] 자바 버전 변경하는 방법 ( JDK 8 -> JDK 17) - 코딩팩토리

  1. 이제 프로젝트에 버전을 바꿔주어야 합니다. 변경 방법은 다음 링크로 가서 확인해주세요.
    [이클립스] 프로젝트 자바버전 바꾸기!

  2. 이제 제대로 실행되는 것을 확인할 수 있습니다.


🙄 JDK 17이 보이지 않을 경우

만약 위의 링크를 따라서 변경하는 도중에 다음과 같이 JDK 16만 나오고 17이 드롭박스에 나오지 않는다면 이클립스 버전을 업데이트 해주면 해결됩니다.

기존 이클립스를 업데이트하거나 기존 이클립스를 삭제하고 새 버전으로 설치할 수 있습니다. 저는 기존 이클립스를 업데이트하지 않고 삭제하고 새 버전으로 설치했습니다.

새 버전을 설치하면 다음과 같이 17이 보이는 것을 확인할 수 있습니다.

기존 이클립스의 버전 업그레이드/다운그레이드 하는 법을 자세히 보고 싶다면 다음 링크에서 확인해주세요
[Eclipse] 이클립스 버전 업그레이드/다운그레이드

저는 업그레이드를 시도하다가 꼬인 오류가 너무 많아서 그냥 삭제하고 재설치했습니다.


🙄 Sts가 설치가 안되는 경우

이클립스 마켓플레이스에서 Sts를 받는데 not found라면서 안받아 지는 경우가 있습니다.

해당 경우에는 다음과 같이 Help > Install New Software... 로 들어갑니다.

이제 다음 url을 Work with: 에 넣어주고 전부 선택한 후에 설치해줍니다.

https://download.eclipse.org/mylyn/releases/latest/

이제 정상적으로 Sts를 받을 수 있습니다.

출처: https://okky.kr/articles/1361963


🙄 An internal error occurred during: "Updating Maven Project" 오류가 나타나는 경우

An internal error occurred during: "Updating Maven Project". 'org.apache.maven.project.MavenProject org.eclipse.m2e.core.project.configurator.ProjectConfigurationRequest.getMavenProject()'

만약 해당 오류가 발생한다면 다음과 같이 해결할 수 있습니다.
1. 이클립스 종료
2. 프로젝트 폴더로 이동해서 .metadata 폴더 제거
3. 이클립스를 다시 킴
4. 프로젝트를 수동으로 import 해줌.
5. 정상 작동확인

출처: https://stackoverflow.com/questions/19522897/an-internal-error-occurred-during-updating-maven-project-java-lang-nullpoint

profile
공부한 내용을 적지 말고 이해한 내용을 설명하자

0개의 댓글