【问题标题】:Could not load [org.bouncycastle.jcajce.provider.digest.GOST3411$Mappings]无法加载 [org.bouncycastle.jcajce.provider.digest.GOST3411$Mappings]
【发布时间】:2020-09-24 11:50:35
【问题描述】:

我正在使用 tomcat8 服务器,.bouncycastle 进行文档签名。 一个战争文件已经在我的服务器上运行。当我为我的第二个项目部署了新的战争文件时,出现异常。

我已经点击并试用了 stackoverflow 上的每个链接,但没有运气

org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading 非法访问:此 Web 应用程序实例已停止 已经。不能加载 [org.bouncycastle.jcajce.provider.digest.GOST3411$Mappings]。这 抛出以下堆栈跟踪以用于调试目的以及 尝试终止导致非法访问的线程。 java.lang.IllegalStateException:非法访问:此 Web 应用程序 实例已经停止。无法加载

 public static void xmlSigner(File xmlFile,String pfxFilePath){
    try{
            File pfxFile=new File(pfxFilePath);
            Security.addProvider(new BouncyCastleProvider());
            log.info("Above key store ");
            KeyStore keyStore = KeyStore.getInstance("pkcs12", "BC");
            log.info("below key store ");
            keyStore.load(new FileInputStream(pfxFile),password.toCharArray());
            log.info("load pfx file key store ");
            String alias = (String) keyStore.aliases().nextElement();
            PrivateKey privateKey = (PrivateKey) keyStore.getKey(alias, password.toCharArray());
            Certificate[] certificateChain = keyStore.getCertificateChain(alias);
            X509Certificate publickeyCertificate = (X509Certificate) certificateChain[certificateChain.length - 1];
            //log.info("privateKey : " + privateKey);
            //log.info("xmlSigner : " + xmlFile);
            log.info("SignerClient - Above Sign and Zip");
            SignerUtil.signAndzipFile(xmlFile, privateKey, publickeyCertificate);
            log.info("Successfully Signed");
        }
        catch(Exception xmlSignerException){
            log.error("xmlSigner : ", xmlSignerException);
            xmlSignerException.printStackTrace();

        }

   }

我在下面一行遇到异常

KeyStore keyStore = KeyStore.getInstance("pkcs12", "BC");

【问题讨论】:

  • @AbdouRayes:好的
  • @AbdouRayes :没有得到预期的答案,我已经尝试了所有给定的答案
  • 很多关于服务器重启问题的答案已经解决。实际上我正在开发预生产环境。所以我想修复我当前的环境,因为我无权重新启动生产环境。
  • BouncyCastle 类的类加载问题的最常见原因是类路径中有多个 BC jar 副本,通常是不同的版本。请检查。另请说明您使用的 BC 版本、您使用的特定 BC 罐子以及这些罐子的位置。

标签: java spring tomcat8 bouncycastle


【解决方案1】:

我也遇到了同样的问题,Tomcat重启解决了。

keystore = KeyStore.getInstance("PKCS12", "BC");
// java.security.KeyStoreException: PKCS12 not found
Caused by: java.security.NoSuchAlgorithmException: class configured for KeyStore (provider: BC) cannot be found.
    at java.security.Provider$Service.getImplClass(Provider.java:1649)
    at java.security.Provider$Service.newInstance(Provider.java:1592)
    at sun.security.jca.GetInstance.getInstance(GetInstance.java:236)
    at sun.security.jca.GetInstance.getInstance(GetInstance.java:206)
    at java.security.Security.getImpl(Security.java:698)
    at java.security.KeyStore.getInstance(KeyStore.java:896)
    ... 11 more
Caused by: java.lang.ClassNotFoundException: Illegal access: this web application instance has been stopped already. Could not load [org.bouncycastle.jcajce.provider.keystore.pkcs12.PKCS12KeyStoreSpi$BCPKCS12KeyStore]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
    at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForClassLoading(WebappClassLoaderBase.java:1354)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1211)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1172)
    at java.security.Provider$Service.getImplClass(Provider.java:1636)
    ... 16 more
Caused by: java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load [org.bouncycastle.jcajce.provider.keystore.pkcs12.PKCS12KeyStoreSpi$BCPKCS12KeyStore]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
    at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1364)
    at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForClassLoading(WebappClassLoaderBase.java:1352)
    ... 19 more

【讨论】:

  • 感谢您的建议和回答??
【解决方案2】:

请首先检查 org.bouncycastle 是否有多个版本。保留一个版本,如果使用tomcat,重启tomcat。

【讨论】:

    猜你喜欢
    • 2018-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-08
    • 2018-03-26
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    相关资源
    最近更新 更多