
🎭 요구사항 (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)
- Charles Zhang,"Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass", https://www.zhangjc.com/2022/08/28/Unable-to-make-protected-final-java-lang-Class-java-lang-ClassLoader-defineClass/ (2023.01.27.)
- Baeldung, "Java 9 Illegal Reflective Access Warning", https://www.baeldung.com/java-illegal-reflective-access (2023.01.27.)
'Issues' 카테고리의 다른 글
GitHub | Authentication failed 해결과 토큰 발급 방법 (0) | 2022.01.10 |
---|---|
Java | flatMap(Arrays::stream) 활용하기 (0) | 2021.12.14 |
NGINX | htpasswd: command not found 해결 (2) | 2021.12.13 |
H2 | JdbcSQLNonTransientConnectionException [90149] 해결 (0) | 2021.12.09 |
Java | JDK 8에서 JDK 11로 버전 변경하기 (0) | 2021.12.07 |
댓글