You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

更新Struts和Spring Jar后部署报错:NoClassDefFoundError: X509Certificate

问题描述

受困于该问题已有一段时间:WAR文件编译正常,类文件也存在,但应用无法运行并返回404错误。此问题始于我尝试更新Struts和Spring的.jar文件,这是我接手的一个老旧且严重过时的应用,我正试图提升其安全性,却卡在这个部署错误上,恳请各位提供解决方向。

错误日志

21-Oct-2022 14:39:18.916 SEVERE [localhost-startStop-42] org.apache.catalina.core.StandardContext.listenerStart Exception sending context initialized event to listener instance of class [org.springframework.web.context.ContextLoaderListener]
        org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.lang.NoClassDefFoundError: java/security/cert/X509Certificate
                at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:414)
                at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336)
                at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304)
                at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181)
                at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217)
                at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188)
                at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125)
                at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)
                at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:126)
                at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:614)
                at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:514)
                at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:443)
                at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:325)
                at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
                at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4689)
                at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5155)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
                at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:743)
                at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:719)
                at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:705)
                at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:970)
                at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1840)
                at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
                at java.util.concurrent.FutureTask.run(FutureTask.java:266)
                at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
                at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
                at java.lang.Thread.run(Thread.java:750)
        Caused by: java.lang.NoClassDefFoundError: java/security/cert/X509Certificate
解决方向
  • 检查JDK版本兼容性:java/security/cert/X509Certificate是JDK核心类,出现找不到的情况大概率是版本不匹配。确认更新后的Spring/Struts版本的最低JDK要求(比如Spring 5.x需JDK 8+,Spring 4.x需JDK 6+),同时保证编译WAR的JDK与Tomcat运行的JDK版本一致,避免跨版本编译导致类加载异常。
  • 清理依赖冲突:删除WEB-INF/lib目录下旧版本的Spring、Struts相关jar,只保留新版本依赖。同时检查是否遗漏了新版本Spring所需的安全相关依赖,若配置了证书相关Bean,需确保对应依赖jar存在。
  • 清理Tomcat缓存:删除Tomcat的work和temp目录下所有文件,重新部署WAR包,避免旧类缓存干扰新应用加载。
  • 排查XML配置问题:新版本Spring可能不再支持旧XML配置标签,检查applicationContext.xml中是否有引用X509Certificate或相关安全类的配置,替换为新版本兼容的写法。可尝试逐步注释部分Bean配置,定位触发错误的具体配置项。

内容的提问来源于stack exchange,提问作者ddoublea

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 22:35:21