首页 > 解决方案 > 由于不同的模块,javax.crypto.CipherSpi 的 Classcast 异常

问题描述

我正在将一个应用程序移至使用加密的 Java 11。当我尝试运行测试时,出现以下错误。

java.lang.ClassCastException: 
class com.sun.crypto.provider.AESCipher$General 
cannot be cast to class javax.crypto.CipherSpi 
(com.sun.crypto.provider.AESCipher$General is in module 
java.base of loader 'bootstrap'; 
javax.crypto.CipherSpi is in unnamed module of loader
org.powermock.core.classloader.javassist.JavassistMockClassLoader@4c1d9d4b)

我不明白它的含义或如何解决它。

标签: java

解决方案


经过一些有用的指导后,我能够追踪到仅在使用 @RunWith(PowerMockRunner.class) 时才发生的问题。为了解决这个问题,我添加了 @PowerMockIgnore({"javax.crypto.*"}) 注释。这解决了所有错误,测试现在按预期工作。


推荐阅读