Application Servers & Java
java.lang.IllegalArgumentException: Class version is supported up to JDK 1.7
midworker
2025. 5. 19. 22:31
반응형
JVM 실행 시 다음과 같은 오류가 발생하며 애플리케이션이 정상 기동되지 않는 경우가 있습니다.
에러 메시지
java.lang.IllegalArgumentException: Class version is supported up to JDK 1.7
원인 분석
이 에러는 클래스 파일(.class)의 버전이 현재 실행 중인 JVM이 인식할 수 있는 범위를 초과했을 때 발생합니다.
즉,
- 컴파일된 클래스 파일이 더 최신 JDK로 빌드되었고,
- 실행 중인 JVM은 그보다 낮은 버전일 때 발생합니다.
예를 들어:
컴파일 환경 (javac) | 실행 환경 (java) | 발생 가능성 |
---|---|---|
JDK 11 | JDK 7 | ✅ 오류 발생 |
JDK 8 | JDK 8 | ❌ 정상 작동 |
JDK 7 | JDK 11 | ✅ 정상 작동 (상위 호환) |
클래스 버전 대응표
Class Version | JDK 버전 |
---|---|
51.0 | JDK 7 |
52.0 | JDK 8 |
53.0 | JDK 9 |
54.0 | JDK 10 |
55.0 | JDK 11 |
56.0 | JDK 12 |
... | ... |
※ 오류 메시지에서 "지원은 JDK 1.7까지"라고 나온 경우 → JVM은 Class Version 51.0까지 지원
해결 방법
1. JDK 버전 맞추기
- 실행 중인 JVM 버전을 업그레이드하세요.
- 예: JDK 11로 컴파일한 클래스는 최소 JDK 11로 실행해야 함
java -version
javac -version
2. 컴파일 시 --target
옵션 명시
빌드 시 하위 호환을 유지하고 싶다면, 컴파일 시점에 --release
, -target
, -source
옵션을 사용하세요.
예:
javac --release 8 MyApp.java
또는
javac -source 1.7 -target 1.7 MyApp.java
Gradle 예:
java {
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
}
Maven 예:
<properties>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
결론
이 에러는 "컴파일러는 최신, 실행기는 구버전"일 때 가장 흔히 발생합니다.
Java의 클래스 파일은 하위 버전에서 상위 버전 클래스 파일을 읽을 수 없습니다.
애플리케이션을 실행할 환경의 JVM 버전과 클래스 파일을 생성한 컴파일러 버전이 호환되는지 반드시 확인해야 합니다.
반응형