반응형
경고 메시지
Processing the annotation of the class [...] failed but the deployment process will continue:
java.lang.IllegalArgumentException: Class version is supported up to JDK 1.7.
오류 의미
이 메시지는 특정 클래스가 JDK 9 이상의 버전으로 컴파일된 클래스 파일임에도,
현재 애플리케이션 서버(JBoss, WildFly 등)가 JDK 8 이하만 지원하는 설정으로 실행되고 있어 발생합니다.
예시 경로
META-INF/versions/9/org/apache/logging/log4j/util/...
→ 이는 Java 9의 멀티릴리즈 JAR(Multi-Release JAR) 구조이며,
JDK 9 이상에서만 활성화되는 클래스가 포함된 것을 나타냅니다.
주요 원인
원인 | 설명 |
---|---|
로그4j 등 외부 라이브러리가 JDK 9 이상으로 빌드됨 | log4j-core , log4j-api 등 일부 최신 버전 |
현재 애플리케이션 서버는 JDK 8 이하 | JBoss 7.x, WildFly 구버전 등 |
서버에서 멀티릴리즈 JAR을 제대로 처리 못함 | META-INF/versions/9 경로 내 클래스 파싱 오류 |
해결 방법
1. JDK 8 이하 호환 버전의 라이브러리로 교체
예: Log4j 사용 시 다음 버전을 고려
<!-- Log4j 2.17.1 등 JDK 8 호환 버전 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.17.1</version>
</dependency>
→ 2.20.x
이상은 기본적으로 JDK 9 이상 클래스 포함됨
2. 서버를 JDK 11 이상으로 업그레이드
- 해당 오류는 JDK 9 이상의 클래스 버전을 인식할 수 없을 때 발생
- JBoss / WildFly가 지원하는 범위 내에서 JDK 업그레이드 고려
3. 멀티릴리즈 JAR 비활성화 (실험적)
빌드 툴(Maven, Gradle 등)에서 멀티릴리즈 JAR로 생성되지 않도록 제어하거나
배포 전 JAR 내부에서 META-INF/versions/
폴더를 제거
zip -d log4j-core-2.x.x.jar "META-INF/versions/*"
⚠️ 권장 방식은 아님. 되도록 JDK 호환성 맞는 버전으로 교체하세요.
결론
이 오류는 클래스 파일 버전(JDK 컴파일 버전) 불일치로 인해 발생하는 문제입니다.
멀티릴리즈 JAR을 사용하는 라이브러리는 현재 서버 환경(JDK 7/8)과 호환되는 버전으로 교체하는 것이 가장 안정적인 해결책입니다.
반응형
'Application Servers & Java' 카테고리의 다른 글
SIGSEGV - GPF 오류 (Invalid Memory Access) in IBM J9 JVM (2) | 2025.05.21 |
---|---|
WFLYSRV0059 – Class-Path 참조가 유효하지 않음 (0) | 2025.05.21 |
JsonMappingException – No content to map due to end-of-input (0) | 2025.05.21 |
JDBC-14002: Invalid argument type or value – 잘못된 파라미터 전달 오류 (1) | 2025.05.21 |
JDBC-590703: Unsupported data type – JDBC에서 지원하지 않는 데이터 타입 오류 (0) | 2025.05.21 |