error:com.sun.crypto.provider.AESCipher $ General无法转换为javax.crypto.CipherSpi

问题描述 投票:1回答:1

您好,我在liferay dxp项目中使用的是paytm校验和依赖性

但是我收到“错误:com.sun.crypto.provider.AESCipher $ General无法转换为javax.crypto.CipherSpi”]

等级属性:

dependencies {compile fileTree(dir: 'libs/', include: '*.jar') compileInclude name: 'paytmchecksum-1.1'}

PaytmUtil包含以下代码。

私有静态字符串getCheckSumPayTm(TreeMap reqMap){

    CheckSumServiceHelper checkSumServiceHelper =  CheckSumServiceHelper.getCheckSumServiceHelper();

String checksum = null;
try {
    checksum =  checkSumServiceHelper.genrateCheckSum("paytmKey", reqMap.toString());
    log.info("PAYTM CHECKSUM ================== "  + checksum);
} catch (Exception e) {
    e.printStackTrace();
    log.error("error :" + e.getMessage());
}
return checksum;

}

java gradle liferay paytm
1个回答
0
投票

假设根据静态类层次结构,您希望com.sun.crypto.provider.AESCipher$Generaljavax.crypto.CipherSpi的有效子类,那么您正在处理类路径上的重复类-但是会得到它们。

compileInclude是一个不错的选择,因为它可以在类路径上包含比您想要的更多的代码,即,复制本应通过常规类加载机制生成的类。

不幸的是,此错误消息并没有告诉您,是加载每个提到的类的类加载器。而且很可能是重复的超类。您通常可以通过以下方式读取错误消息:

[com.sun.crypto.provider.AESCipher$General无法转换为从类加载器A加载的javax.crypto.CipherSpi-但是,它可以从类加载器B转换为javax.crypto.CipherSpi

[不幸的是,在这种情况下,您必须自己找到类加载器A和B,但是如果您在类路径的任何位置查找CipherSpi的位置,则应该可以找到它。通常已经提供了它,您不应该自己带它。

© www.soinside.com 2019 - 2024. All rights reserved.