ClassCastException: com.sun.crypto.provider.AESCipher$General нельзя привести к javax.crypto.CipherSpi на Karaf 4.2.5

Мы используем Apache karaf 4.2.5. Мы используем алгоритм шифрования AES в нашем приложении. И пакет javax.crypto присутствует в Karaf etc/jre.properties для java 1.8.

Мы получаем ClassCastException, когда вызываем Cipher ci = Cipher.getInstance("AES/CTR/NoPadding");

Исключение в потоке "Thread-33" java.lang.ClassCastException: com.sun.crypto.provider.AESCipher$General нельзя привести к javax.crypto.CipherSpi в javax.crypto.Cipher.getInstance(Cipher.java:137)

Пакет karaf с этим кодом действительно импортирует пакет javax.crypto. Может ли кто-нибудь указать, что мне здесь не хватает.

С уважением. Дирадж


person Dheeraj Guntupalli    schedule 26.02.2020    source источник
comment
У меня такая же проблема, вы выяснили в чем причина?   -  person Nicolas Guillaume    schedule 30.06.2020
comment
У нас был пакет, который экспортирует * в файл pom.xml, который также экспортирует пакеты javax.crypto.*. Что было не нужно, поэтому их удаление и экспорт только пакетов в комплекте решило это.   -  person Dheeraj Guntupalli    schedule 05.08.2020


Ответы (1)


Лучше всего не экспортировать ничего, что вы уже импортировали, потому что, если два вызывающих объекта используют разные экспортеры одних и тех же пакетов, созданные классы будут привязаны к их соответствующему ClassLoader (каждый пакет имеет свой собственный), и ClassCastException может возникнуть, если два идентичных класса из разных ClassLoader взаимозаменяемо

person Jonathan Schoreels    schedule 01.10.2020