Back-End/SpringBoot
[SpringBoot/Java17] java 17 SunJCE 오류 해결(vm option 추가)
코딩콩
2022. 12. 12. 14:45
문제
신규 프로젝트에 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']
...
}
...
}