본문 바로가기
Issues

Java | Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass 해결

by YIAN 2023. 1. 27.

 

🎭 요구사항 (Requiredments)

 

intelliJ에서 프로젝트를 빌드하려는데, 다음과 같은 에러가 발생합니다.

 

Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @2e4d4d22

 

찾아보니 Java9 버전 이후부터는 reflection API 관련 기능에 제한이 생겼다고 합니다.

해결방법은 옵션을 추가해주는 것입니다.

 

 

🎃 해결방안 (Solution or Next step)

 

1. [Edit Configurations...] 열기

 

 

프로젝트 환경설정을 열어주세요.

 

 

2. [Run/Debug Configurations] > [Build and run] > [Modify options] 클릭

 

 

위 사진처럼 보이는 창에서 [Build and run] 영역의 오른쪽에 [Modify options]를 클릭하세요.

 

 

3. [Program arguments] 선택

 

 

중간에 보이는 [Program arguments]를 클릭해 주세요.

 

 

4. 다음 값 입력 후 [Apply] > [OK] 버튼을 클릭하여 적용

 

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

 

 

위에 적힌 값을 복사해서 새로 생성된 매개변수 칸에 입력해 주세요.

입력했다면 오른쪽 하단에 [Apply] 버튼 클릭 후 [OK] 버튼을 클릭하면 적용됩니다.

만약 적용이 되지 않는다면 프로젝트를 닫았다가 다시 열면 됩니다.

 

 

👓 회고 (Retrospect)

 

혹시 위 방법을 사용했음에도 불구하고 같은 에러가 발생된다면 JDK 버전 설정을 확인해 주세요.

위 에러의 원인이 여러가지가 있겠지만, 본 내용 때문이거나 JDK 버전이 맞지 않아서일 가능성이 높습니다.

 

 

📚 참고자료 (References)

 

 

댓글