module java.base does not "opens java.lang" to unnamed module 에러 원인과 해결방법 본문

프로그램/JAVA

module java.base does not "opens java.lang" to unnamed module 에러 원인과 해결방법

반응형

이클립스에서 어떤 이유로 plugin이 업데이트 된 이후로

프로젝트 빌드 시 java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module... 와 같은 오류가 계속 발생하게 되었다.

 

해당 에러는 lombok을 사용하는 경우 발생하며 발생하는 이유는 JDK 16이후에서 보안정책이 강화되어서

private 접근자에 대한 강제 접근 처리가 되지 않으면서 lombok을 사용하는 코드에서 발생되는 오류로 확인되었다.

 


해결 방법은 크게 두가지 방법이 있는데

1. 첫번째 방법

    lombok의 버전이 1.8.22 이전 버전으로 설치되어 있는 경우에는 해당 오류를 막기위해서 eclipse.ini 파일에

   아래와 같이 추가해줘야 한다. 

   [참고사이트] https://github.com/projectlombok/lombok/issues/2810

--illegal-access=warn
--add-opens java.base/java.lang=ALL-UNNAMED

   하지만 본인도 이렇게 처리를 해봤지만 해결이 되지는 않았다. 이렇게 간단히 되는 사람이라면 이렇게 처리만 해도 된다.

 

2. 두번째 방법

    위의 1번 방법으로 해결이 안되니 어쩔 수 없이 lombok을 최신 버전으로 설치하는 방법이다.

 

    우선 mvnrepository에서 jar를 다운 받는다. 

    https://mvnrepository.com/search?q=lombok

Project Lombok 선택
최신버전의 jar를 다운로드

명령프롬프트를 관리자 권한으로 열어서 lombok을 다운로드 받은 위치로 이동한 뒤에 명령창처럼 jar를 실행한다.

이때 java 프로그램이 실행이 안된다면 C:\development\jdk1.8.0_241_64bit\bin\java  처럼 java 실행 위치를 앞에 추가한다.

명령프롬프트 관리자 권한 실행
java를 이용하여 lombok 실행

실행하면 아래와 같이 팝업창이 뜨고, 'Specify location'을 눌러서 이클립스 폴더를 지정하고

'install/update'를 클릭해서 설치한다.

lombok 설치

이렇게 설치하면 이클립스에 lombok.jar가 생성되고 eclipse.ini 파일이 업데이트 된다.

반응형

프로그램/JAVA Related Articles

MORE

Comments