Java ClassCastException无法强制转换到同一个类,可能是类加载器问题?

Java ClassCastException无法强制转换到同一个类,可能是类加载器问题?,java,classloader,classcastexception,Java,Classloader,Classcastexception,我的堆栈跟踪中有以下错误消息: Caused by: java.lang.ClassCastException: org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPrivateKey cannot be cast to org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPrivateKey at myorg.blockchain.axr.util.FabricCA.loadSDKUser(F

我的堆栈跟踪中有以下错误消息:

Caused by: java.lang.ClassCastException: org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPrivateKey cannot be cast to org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPrivateKey
at myorg.blockchain.axr.util.FabricCA.loadSDKUser(FabricCA.java:90)
at myorg.blockchain.axr.core.Platform.init(Platform.java:91)
... 115 more
这一行是指以下代码段的最后一行:

String keyPass = decryptPassword(appUserKeyPassword, appUserName, appUserAffiliation, appUserMspId);
// read and parse the encrypted private key PEM
pemParser = new PEMParser(new InputStreamReader(ResourceLoader.getResourceAsStream(appUserKeyPath)));
PKCS8EncryptedPrivateKeyInfo encPrivKeyInfo = (PKCS8EncryptedPrivateKeyInfo) pemParser.readObject();
JcaPEMKeyConverter converter = new JcaPEMKeyConverter().setProvider(BouncyCastleProvider.PROVIDER_NAME);
InputDecryptorProvider pkcs8Prov = new JceOpenSSLPKCS8DecryptorProviderBuilder().build(keyPass.toCharArray());
BCECPrivateKey privKey = (BCECPrivateKey)converter.getPrivateKey(encPrivKeyInfo.decryptPrivateKeyInfo(pkcs8Prov));
我查找了这个异常,所有这些异常都涉及某种类装入器问题。这个问题与其他类装入器问题类似吗?我应该如何调试这个



编辑:这段代码是独立开发的,但是当集成到父应用程序中时,它将在Tomcat中运行。不确定这是否解决了“在容器中运行”的问题?

很可能有两个
类的实例通过不同的类加载器加载。这不是一个容易调试的问题。我假设您在某种web容器中。我同意这看起来像类加载器问题,因为在代码中加载
BCECPrivateKey
的类加载器与加载
BCECPrivateKey
供BouncyCastle库使用的类加载器不同。但是,配置错误的位置很难帮助您找到您所提供的内容,因为它通常取决于环境、配置等。您是否在某种OSGi容器中?您通常可以设置断点并检查这两个类的
getClass().getClassLoader()
,这可能表明加载是如何发生的。编辑问题以澄清代码的目的@JimGarrisonEdited问题以澄清代码@MarkPeters的目的