[JAVA] org.jasypt.exceptions.EncryptionInitializationException: java.lang.ExceptionInInitializerError

dev_jubby·2024년 4월 17일
0

JAVA JDK1.8 환경에서 jasypt를 사용하려고 할때 아래와 같은 에러가 발생했다.


Exception in thread "main" org.jasypt.exceptions.EncryptionInitializationException: java.lang.ExceptionInInitializerError
	at org.jasypt.encryption.pbe.StandardPBEByteEncryptor.initialize(StandardPBEByteEncryptor.java:773)
	at org.jasypt.encryption.pbe.StandardPBEStringEncryptor.initialize(StandardPBEStringEncryptor.java:566)
	at org.jasypt.encryption.pbe.StandardPBEStringEncryptor.encrypt(StandardPBEStringEncryptor.java:644)
	at Encyrpt.main(Encyrpt.java:14)
Caused by: java.lang.ExceptionInInitializerError
	at com.ibm.icu.impl.NormalizerDataReader.<clinit>(NormalizerDataReader.java:300)
	at com.ibm.icu.impl.NormalizerImpl.<init>(NormalizerImpl.java:288)
	at com.ibm.icu.impl.NormalizerImpl.<clinit>(NormalizerImpl.java:35)
	at com.ibm.icu.text.Normalizer$Mode.normalize(Normalizer.java:188)
	at com.ibm.icu.text.Normalizer.normalize(Normalizer.java:1177)
	at com.ibm.icu.text.Normalizer.normalize(Normalizer.java:1146)
	at org.jasypt.normalization.Normalizer.normalizeWithIcu4j(Normalizer.java:205)
	at org.jasypt.normalization.Normalizer.normalizeToNfc(Normalizer.java:129)
	at org.jasypt.encryption.pbe.StandardPBEByteEncryptor.initialize(StandardPBEByteEncryptor.java:718)
	... 3 more
Caused by: java.lang.IllegalArgumentException: Invalid version number: Version number may be negative or greater than 255
	at com.ibm.icu.util.VersionInfo.getInstance(VersionInfo.java:191)
	at com.ibm.icu.impl.ICUDebug.getInstanceLenient(ICUDebug.java:65)
	at com.ibm.icu.impl.ICUDebug.<clinit>(ICUDebug.java:69)
	... 12 more


해결방법 1

  1. OraCle 에서 관련 JCE(Java Cryptography Extension) 다운받기 https://www.oracle.com/java/technologies/javase-jce8-downloads.html
    - jce_policy-8.zip

    ❗JAVA 버전마다 다운받아야 하는 파일 다름!
    위 파일은 JAVA8 (JDK1.8) 기준

  1. 아래 두 파일을 사용하는 JDK 폴더(/jre/lib/security)에서 교체하기

    local_policy.jar
    US_export_policy.jar



해결방법 2

icu4j 라이브러리를 사용하는데에 있어 문제가 있어보였다.

참고 stackoverflow

  1. 사용중인 icu4j.jar 삭제하기

    사실 나는 필요한 패키지가 아니어서 삭제했다.
  2. 최신 icu4j.jar 로 교체하기 (67.1 이상)

profile
신입 개발자 쥬비의 기술 블로그 입니다.

0개의 댓글