
결론부터 말하자면
1. Java JDK 버전이랑 gradle JDK 버전이 다른 경우
2. Gradle 버전과 Java 버전 호환성 문제
3. ★ 스프링부트 버전을 너무 최신으로 선택한 경우★ (내가 해결한 방법)
나의 경우, 내가 사용하려는 자바는 17버전이었다.
스프링부트 start는 아래와 같이 설정하였다.

Project - Gradle Groovy
Language - Java
Spring Boot - 4.0.2
Java version - 17
1. Java JDK 버전이랑 gradle JDK 버전이 다른 경우
원인 분석
major version 65는 Java 21을 의미한다.
그러니 프로젝트의 어딘가에 Java21 버전이 섞여 있거나, 사용 중인 Gradle 버전이 너무 낮아서 Java21을 해석하지 못하는 경우인 것이다.
비유하자면, 최신형 외국어(Java 21)로 쓰인 책을 읽어야 하는데, "구버전 번역기(낮은 버전의 Gradle)"를 사용하고 있어서 "이게 무슨 말인지 모르겠어!"라고 에러를 내뱉는 상황이라고 보면 된다.
해결방법
1) 인텔리제이 프로젝트 자체가 어떤 자바 버전을 바라보는지 확인
- Project Structure 단축키: Ctrl + Alt + Shift + S (Windows)



- 체크 포인트:
Project: SDK가 17로 설정되어 있는지 확인 ( 원하는 자바 버전으로 설정 되어 있는지 확인하는 것)
Modules: 각 모듈의 'Language level'이 17로 되어 있는지 확인
2) Gradle 설정 내 JDK 버전 확인
- 경로: Settings -> Build, Execution, Deployment -> Build Tools -> Gradle


- 체크 포인트: Gradle JVM 항목이 Project SDK 또는 Java 17로 정확히 선택되어 있는지 확인
- 만약 여기가 Java 21로 되어 있다면 65 버전 에러가 계속 날 수 있다.
2. Gradle 버전과 Java 버전의 호환성
만약 위 설정을 다 맞췄는데도 안 된다면, Gradle 자체의 버전이 너무 낮을 가능성이 크다.
원인
Gradle 버전이 낮으면 최신 Java 버전을 인식하지 못해 "Unsupported class file" 에러를 낸다.
확인 방법: 프로젝트 폴더 내 gradle/wrapper/gradle-wrapper.properties 파일을 연다.
해결책: distributionUrl의 버전을 확인
Java 17을 쓰려면 Gradle 7.3 이상이 필요
Java 21을 쓰려면 Gradle 8.5 이상이 필요
Tip: 현재 major version 65가 뜬다는 건 시스템 어딘가에서 Java 21을 건드리고 있다는 뜻이다.
만약 Java 17을 꼭 써야 한다면, build.gradle 파일에 sourceCompatibility = '17' 설정이 들어있는지도 확인해봐야 한다.
※ 자바 버전과 gradle 버전 호환성 여부는 아래 링크 참조
https://docs.gradle.org/current/userguide/compatibility.html#java_runtime
3. 스프링부트 버전이 너무 최신인지 확인
결과적으로 "Unsupported class file major version 65" 해당 에러가 나기 직전에 어떤 에러가 났었는지 확인을 해보았다.
A problem occurred configuring root project 'java'.
> java.util.concurrent.ExecutionException: org.gradle.api.GradleException: Failed to create Jar file C:\Users\user\.gradle\caches\jars-9\
a8040601eed280ae7423eae12ad18416\spring-core-7.0.3.jar.
spring-core-7.0.3.jar 해당 부분이 문제를 해결하는데 결정적인 단서가 되었다.


1) 원인: 스프링 부트 3.x vs 스프링 7.x
현재 에러에 찍힌 spring-core-7.0.3 버전은 Spring Framework 7의 구성 요소이다.
Spring Framework 6 / Spring Boot 3: 최소 Java 17이 필요
Spring Framework 7 (최신): 최소 Java 21이 필요
해당 에러는 프로젝트를 생성할 때 스프링 부트 버전을 가장 최신(아마도 3.4.x 이상 또는 곧 출시될 버전)으로 선택했거나 의존성 라이브러리 버전이 Java 21을 요구하는 버전으로 잡혀있는 상태이다.
즉, 설정은 Java 17로 잘 했지만, 가져오려는 라이브러리가 "난 Java 21(major version 65) 없으면 일 안 해!"라고 거부하고 있는 상황인 것.
2) 해결 방법: 스프링 부트 버전 낮추기
build.gradle 파일을 열어서 상단의 plugins 부분을 확인

역시, SpringBoot 버전이 4.0.2 로 잡혀져 있었다.
****내가 설정한 JAVA17버전으로 스프링부트 돌리려면 Springboot version 3.2.x 또는 3.3.x 버전으로 낮춰야 한다.****
Gradle
plugins {
id 'org.springframework.boot' version '3.4.x' // 이 버전을 확인할 것!
...
}
만약 버전이 너무 높게 잡혀 있다면, 3.2.x 또는 3.3.x 버전으로 낮춰야 한다.
추천 버전: 3.3.8 (현재 Java 17에서 가장 안정적으로 돌아가는 버전 중 하나)
3) 캐시 청소 (필수)
라이브러리 버전 설정을 바꾼 뒤에는 아까 에러가 났던 그 "고장 난 Jar 파일" 기록을 지워줘야 한다.
인텔리제이 종료 후,
에러 메시지에 나온 경로인 C:\Users\user\.gradle\caches 폴더를 찾아가서 caches 폴더 전체를 삭제하거나, 그 안의 내용을 비운다.
인텔리제이를 다시 실행하고 [Gradle 새로고침(Reload)]을 실행한다.

build.gradle 파일에서
plugins 안에 있는 boot 버전을 3.3.8로 낮줬더니, BUILD SUCCESSFUL 되었다.
'웹개발 > Spring' 카테고리의 다른 글
| [Spring] 스프링 프레임워크의 탄생 배경과 역사 : 왜 이름이 '봄'일까? (EJB부터 JPA까지) (0) | 2026.01.26 |
|---|---|
| [Mybatis] resultMap (0) | 2022.09.04 |
| [@InitBinder 어노테이션-WebDataBinder] (0) | 2022.08.05 |
| [Mybatis] Mybatis 기술의 탄생! (feat.ORM) (1) | 2022.07.30 |