에러 해결 목록

[JAVA] Unable to make protected final java.lang.Class 예외 해결

yooverd 2024. 11. 6. 13:03
728x90
반응형
SMALL

프로그램 실행 중 다음과 같은 예외를 마주했다.

 

// 예외 메시지
org.springframework.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 @7cb502c

 

아직 예외메시지를 잘 읽을 줄은 모르지만, 

대충 java.lang 을 열 수 없어, java.lang에서 제공하는 클래스에 접근해서 생성할 수 없는 문제인가 싶었다.

 

구글링해서 해결 방법을 찾아보니, 

자바 프로그램 실행 시, configuration 에 하단의 VM Option 을 추가하면 해결이 되는 것 같아 보였다.

1. 상단 실행바에서 Edit Configuration 선택
2. Modify options -> Add VM options 선택
3. 옵션 추가 후 apply

--add-opens java.base/java.lang=ALL-UNNAMED

 

 

옵션을 추가하고 실행하면 문제 없이 프로그램이 작동된다.

나의 경우엔 java.lang 에 속한 클래스를 사용할 수 없었기 때문에
( module java.base does not "opens java.lang")
java.lang=ALL-UNNAMED 라는 옵션을 넣은 것이다.

만일 다른 패키지에 속한 클래스라면 위의 옵션을 조금 수정해야 할 것이다.

 


 

위 예외의 원인을 조금 더 찾아보았다.

Java 클래스를 직렬/역직렬화시, public 으로 선언한 필드에 대해서는 직렬/역질렬화를 제공하나 private 으로 선언된 필드에 대해선 접근할 수 없기 때문에 다음과 같은 에러가 발생했던 것이다.

 

 

 

참고

VM Option 추가

 

 

Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass 문제해

토비의 스프링 3.1 실습 도중 문제 DaoFactory 생성 후 이를 스프링으로 사용하기 위해 필요한 jar파일들을 넣고 변환하는 과정중 exception이 발생했다. 이클립스 버전 : 2021-09 Java 버전 : 17 에러 내용 Ex

lhc9138.tistory.com

 

에러 원인

 

[Error] Unable to make field private final java.time.LocalDate java.time.LocalDateTime.date accessible: module java.base does no

문제 발생코틀린으로 modelMapper로 Entity to DTO를 진행하던 중 “Unable to make field private final java.time.LocalDate java.time.LocalDateTime.date accessible: module

velog.io

 

728x90
반응형
LIST