문제
신규 프로젝트에 java 17 버전을 적용하면서 java 11 버전을 사용할 때 문제 없이 썼던 모듈에서 아래와 같은 오류가 났다.
java.lang.IllegalAccessError: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 @0x4f209819
원인
모듈 공급사에 문의하니 java 11 이후부터 JCE가 기본적으로 load 되지 않아서 생긴 문제이며 아래 옵션을 추가해서 실행해보라는 답변을 받았다.
--add-exports java.base/com.sun.crypto.provider=ALL-UNNAMED
해결
edit configurations -> vm options 추가
+ build.gradle jib 코드에 vm option 추가하기
로컬에서만 발생하는 문제인 줄 알았는데 개발 서버 배포 후에도 같은 오류로 실행되지 않았다.
jib 컨테이너 실행문에 vm option을 추가해주었다.
jib {
from {
image = 'openjdk:17-alpine'
}
...
container {
entrypoint = ['java', '--add-exports', 'java.base/com.sun.crypto.provider=ALL-UNNAMED', '-jar', 'api-1.0-SNAPSHOT.jar']
jvmFlags = ['-Xms512m', '-Xmx512m', '-Xdebug', '-XshowSettings:vm', '-XX:+UnlockExperimentalVMOptions', '-XX:+UseContainerSupport']
...
}
...
}
'Back-End > SpringBoot' 카테고리의 다른 글
[SpringBoot/Java17] Java 17 Record 활용(nested class, @Builder 사용, Class와 비교) (1) | 2022.12.31 |
---|---|
[SpringBoot] Exception Handler에 return 값을 ResponseEntity로 하지 않으면? (0) | 2022.12.14 |
[SpringBoot] version upgrade (0) | 2022.10.23 |
[SpringBoot/QueryDsl] java.lang.IllegalArgumentException: Multiple entries with same key (0) | 2022.09.04 |
[SpringBoot] e.getStackTrace() 출력 결과 차이 (0) | 2022.08.11 |