📝ERROR NOTE/SPRINGBOOT

[SpringBoot] 자바 버전 다운그레이드하여 프로젝트 실행 시 에러

coldNoodlePigeon 2023. 10. 4.

MSA 강의를 들으면서 프로젝트 버전을 다운그레이드하여 스터디를 진행하던 도중, 

 

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 58.0
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
    at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
    at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:821)
    at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:719)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:642)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:600)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    at com.example.apigatewayservice.ApigatewayServiceApplication.main(ApigatewayServiceApplication.java:10)

Process finished with exit code 1

프로젝트 실행 시 위와 같은 에러가 발생하면서 실행이 되지 않았다. 

 

구글링하여 Project의 Java Compiler 버전도 14로 다시 맞추고, pom.xml (maven으로 진행하던 강의였음) 을 다시 수정하여 Rebuild를 실행해보아도 위와 같은 에러가 계속 발생했다. 

 

그런데 에러메시지를 자세히 보면, 

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 58.0

라는 문장이 보인다. 

 

자바 컴파일 버전이 맞지 않는다고 하는 에러인데, 곰곰히 생각해보니 스터디를 진행하면서 

Spring Cloud의 Gateway dependency를 임의로 pom.xml에서 추가했었는데, 이거 때문에 버전이 맞지 않았던 문제였다. 

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.1</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

기존에 진행했던 2.4.2를 2.4.1 버전으로 다운그레이드 하여 다시 재빌드 하였더니 문제없이 실행되었다. 

0.0.1 버전의 차이가 이렇게나 무섭다니.. (강의를 듣는데 버전 이슈만 2시간 해결한듯;) 

 

Spring intializr가 이전 버전도 지원해줬으면 좋겠다. 

댓글