전자정부프레임워크

 

오류 :

java.lang.IllegalAccessError: 
class NiceID.Check.CPClient ... cannot access class com.sun.crypto.provider.SunJCE (in module java.base)
because module java.base does not export com.sun.crypto.provider to unnamed module

 

즉, Java 9 이상(JDK 17 포함)부터 com.sun.crypto.provider 패키지가 java.base 모듈 내부로 숨겨져서, 외부 코드(NiceID 라이브러리)가 직접 접근할 수 없습니다.
NiceID의 CPClient가 옛날 방식으로 이 내부 클래스를 사용하고 있어서 발생하는 거죠.

 

 

Eclipse + eGovFrame + Tomcat 9 환경에서 --add-exports 옵션 영구 적용하기

 

Eclipse + eGovFrame에서 Tomcat 실행 시 Arguments 탭의 VM arguments가 수정되지 않는 경우, 서버 런치 설정 대신 Tomcat 서버 설정 파일(catalina.bat) 또는 eclipse.ini를 수정해야 합니다.

1. 왜 수정이 안되나?

  • eGovFrame이 제공하는 내장 서버 설정은 기본 런치 구성을 잠가둠.

  • 따라서 Eclipse에서 직접 수정해도 저장이 되지 않거나 재시작 시 초기화됨.

 

2. 영구 적용 방법

(1) Tomcat 실행 스크립트 수정 (Windows 예시)

  1. TOMCAT_HOME/bin/catalina.bat 파일 열기

  2. JAVA_OPTS 설정 부분 찾기. 예시 구조:

if not "%JSSE_OPTS%" == "" goto gotJsseOpts
set "JSSE_OPTS=-Djdk.tls.ephemeralDHKeySize=2048"
:gotJsseOpts
set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%"

rem Register custom URL handlers
rem Do this here so custom URL handles (specifically 'war:...') can be used in the security policy
set "JAVA_OPTS=%JAVA_OPTS% -Djava.protocol.handler.pkgs=org.apache.catalina.webresources"
  1.  

  2. 위 set "JAVA_OPTS=..." 구문에 아래 옵션 추가:

set "JAVA_OPTS=%JAVA_OPTS% --add-exports=java.base/com.sun.crypto.provider=ALL-UNNAMED -Dfile.encoding=UTF-8"
  • 기존 옵션 뒤에 추가하면 기존 설정을 유지하면서 --add-exports 적용 가능

 

(2) Eclipse 외부 Tomcat 설정 사용

  1. eGovFrame에서 Servers 뷰 → 기존 Tomcat 서버 삭제

  2. 외부 Tomcat 설치 경로 지정하여 새 서버 추가

  3. 이제 Run Configurations → VM arguments에서 직접 수정 가능

 

 

(3) eclipse.ini에 추가 (전역 적용)

  1. eGovFrame 설치 폴더에서 eclipse.ini 열기

  2. -vmargs 아래에 옵션 추가:

--add-exports=java.base/com.sun.crypto.provider=ALL-UNNAMED
-Dfile.encoding=UTF-8

모든 프로젝트에 동일하게 적용됨.

 

 

3. 권장 최종 VM arguments 예시

-Djava.awt.headless=true
-Dfile.encoding=UTF-8
--add-exports=java.base/com.sun.crypto.provider=ALL-UNNAMED
--add-opens=java.base/java.lang=ALL-UNNAMED
--add-opens=java.base/java.io=ALL-UNNAMED

 

 

정리:

  • Eclipse 내부 서버 설정에서 VM arguments 수정이 불가하면 catalina.bat 또는 eclipse.ini 수정 필요

  • 외부 Tomcat 런타임을 등록하면 VM arguments 자유롭게 변경 가능

 

 

 

 

 

 

about author

PHRASE

Level 60  라이트

거짓말도 잘만 하면 논 닷 마지기보다 낫다 , 거짓말도 잘 하면 처세(處世)에 도움이 된다는 뜻.

댓글 ( 0)

댓글 남기기

작성

전자정부프레임워크 목록    more