萝卜白菜。 2025-09-02 10:04 采纳率: 97.6%
浏览 29
已结题

在TongWeb上部署应用报错:java.lang.ClassCastException: x.BCECPrivateKey cannot be cast to x.BCECPrivateKey

在TongWeb上部署应用报错:java.lang.ClassCastException: org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPrivateKey cannot be cast to org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPrivateKey

具体日志如下:

[2025-09-01 15:45:53 203] [SEVERE] [http-nio-0.0.0.0-8080-exec-2] [core] [Servlet.service() for servlet [com.tong.TestServlet] in context with path [web] threw exception]
java.lang.ClassCastException: org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPrivateKey cannot be cast to org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPrivateKey
    at cn.hutool.crypto.BCUtil.encodeECPrivateKey(BCUtil.java:44)
    at com.tong.TestServlet.doGet(TestServlet.java:57)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at com.tongweb.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
    at com.tongweb.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
    at com.tongweb.web.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at com.tongweb.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
    at com.tongweb.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
    at com.tongweb.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
    at com.tongweb.catalina.core.StandardContextValve.invoke0(StandardContextValve.java:123)
    at com.tongweb.catalina.core.ThanosStandardContextValve.invoke0(ThanosStandardContextValve.java:14)
    at com.tongweb.catalina.core.StandardContextValve.invoke(StandardContextValve.java:114)
    at com.tongweb.catalina.core.ThanosStandardContextValve.invoke(ThanosStandardContextValve.java:49)
    at com.tongweb.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:44)
    at com.tongweb.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:445)
    at com.tongweb.catalina.core.StandardHostValve.invoke(StandardHostValve.java:368)
    at com.tongweb.tomee.catalina.OpenEJBSecurityListener$RequestCapturer.invoke(OpenEJBSecurityListener.java:97)
    at com.tongweb.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
    at com.tongweb.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    at com.tongweb.catalina.core.ThanosStandardEngineValve.invoke(ThanosStandardEngineValve.java:43)
    at com.tongweb.catalina.realm.RealmValve.invoke(RealmValve.java:21)
    at com.tongweb.catalina.connector.ThanosCoyoteAdaptor.service(ThanosCoyoteAdaptor.java:480)
    at com.tongweb.coyote.http11.Http11Processor.service(Http11Processor.java:889)
    at com.tongweb.coyote.http11.ThanosHttp11Processor.service(ThanosHttp11Processor.java:19)
    at com.tongweb.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:73)
    at com.tongweb.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:935)
    at com.tongweb.web.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1506)
    at com.tongweb.web.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
    at com.tongweb.web.util.threads.TWThreadPoolExecutor.runWorker(TWThreadPoolExecutor.java:1172)
    at com.tongweb.web.util.threads.TWThreadPoolExecutor$Worker.run(TWThreadPoolExecutor.java:628)
    at com.tongweb.web.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:750)

  • 写回答

7条回答 默认 最新

  • 萝卜白菜。 2025-09-09 14:12
    关注

    原因是bcprov-jdk18on-.jar 存在一个全局变量对象,当不同的类加载器加载时就会引起ClassCast异常。 也就是说在一个TongWeb上部署的多个应用都含有bcprov-jdk18on-.jar ,或是对应用进行重部署后就会引发该问题。解决办法:将bcprov-jdk18on-.jar 放在TongWeb公共类库路径下,这样多个应用共享一份类,重部署也不会引起bcprov-jdk18on-.jar 的重新加载, 则可以避免该问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(6条)

报告相同问题?

问题事件

  • 系统已结题 9月17日
  • 已采纳回答 9月9日
  • 创建了问题 9月2日