Java

[Maven] java.lang.IllegalStateException: Unable to load cache item

비번변경 2024. 6. 27. 18:58

현상

Ubuntu 서버에서 maven을 설치하여 Java 애플리케이션을 빌드하던 중 아래와 같은 에러가 발생하면서 실패했다.

[ERROR] Error executing Maven.
[ERROR] java.lang.IllegalStateException: Unable to load cache item
[ERROR] Caused by: Unable to load cache item
[ERROR] Caused by: Could not initialize class com.google.inject.internal.cglib.core.$MethodWrapper
[ERROR] Caused by: Exception com.google.inject.internal.cglib.core.$CodeGenerationException: java.lang.reflect.InaccessibleObjectException-->Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @365c30cc [in thread "main"]

원인을 확인하고 해결해본다.

 

 

원인

설치되어 있는 Java와  Maven이 서로 호환되지 않아 발생하는 에러라고 한다.

현재 설치되어 있는 java 버전과 maven 버전은 아래와 같다.

공식 문서(https://maven.apache.org/docs/history.html) 를 확인해보면 Java 17을 지원하는 maven 버전은 알파나 베타 버전 밖에 없는 것 같다. 그리고 설치되어있는 maven 3.6.0은 출시된지 너무 오래되어서 Java 17은 지원하지 못할 것 같다.

 

 

해결

Java 버전을 내리거나 Maven 버전을 올리는 방식으로 문제를 해결할 수 있다.

이 글에서는 서버 관리자가 Java 17이 아니라 Java 11을 새로 설치한 것으로 확인하여 Java 버전을 내리는 방법을 선택했다. 서버에 이미 Java 11이 설치되어 있었기 때문에 기본 사용 버전만 변경해주었다.

# 선택 가능한 버전 확인
update-java-alternatives --list

# 버전 변경
update-alternatives --config java

 

 

참고 문서

https://shanepark.tistory.com/389