从类路径资源解析 XML 文档时出现意外异常

Posted

技术标签:

【中文标题】从类路径资源解析 XML 文档时出现意外异常【英文标题】:Unexpected exception parsing XML document from class path resource 【发布时间】:2021-07-13 12:56:41 【问题描述】:

我在初始化 spring 上下文时遇到了这个异常。

我可以确认我只使用了一个 spring 版本,即 5.3.3。

当我删除时,

<context:annotation-config />
<context:component-scan base-package="com" />

来自 xml 然后没有与此相关的错误。 同样的 applicationContext.xml 文件也在另一个分支中工作。

2021-07-13 05:05:01,832 INFO  [stdout] (ServerService Thread Pool -- 121) DEBUG [4] (07/13/21 06:05:01:832): Startup Bean Invocation: 0 failed
2021-07-13 05:05:01,833 INFO  [stdout] (ServerService Thread Pool -- 121) EXCEPTION [3] (07/13/21 06:05:01:833): org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [applicationContext.xml]; nested exception is org.springframework.beans.FatalBeanException: Class [org.springframework.context.config.ContextNamespaceHandler] for namespace [http://www.springframework.org/schema/context] does not implement the [org.springframework.beans.factory.xml.NamespaceHandler] interface: Exception occurred invoking Server Startup Bean
2021-07-13 05:05:01,835 ERROR [stderr] (ServerService Thread Pool -- 121) org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [applicationContext.xml]; nested exception is org.springframework.beans.FatalBeanException: Class [org.springframework.context.config.ContextNamespaceHandler] for namespace [http://www.springframework.org/schema/context] does not implement the [org.springframework.beans.factory.xml.NamespaceHandler] interface
2021-07-13 05:05:01,835 ERROR [stderr] (ServerService Thread Pool -- 121)   at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:417)
2021-07-13 05:05:01,836 ERROR [stderr] (ServerService Thread Pool -- 121)   at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:338)
2021-07-13 05:05:01,836 ERROR [stderr] (ServerService Thread Pool -- 121)   at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310)
2021-07-13 05:05:01,836 ERROR [stderr] (ServerService Thread Pool -- 121)   at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188)
2021-07-13 05:05:01,836 ERROR [stderr] (ServerService Thread Pool -- 121)   at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:224)
2021-07-13 05:05:01,836 ERROR [stderr] (ServerService Thread Pool -- 121)   at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:195)
2021-07-13 05:05:01,836 ERROR [stderr] (ServerService Thread Pool -- 121)   at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:257)
2021-07-13 05:05:01,836 ERROR [stderr] (ServerService Thread Pool -- 121)   at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:128)
2021-07-13 05:05:01,836 ERROR [stderr] (ServerService Thread Pool -- 121)   at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:94)
2021-07-13 05:05:01,836 ERROR [stderr] (ServerService Thread Pool -- 121)   at org.springframework.context.support.AbstractRefreshableApplicationContext.__refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)
2021-07-13 05:05:01,836 ERROR [stderr] (ServerService Thread Pool -- 121)   at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:40002)
2021-07-13 05:05:01,837 ERROR [stderr] (ServerService Thread Pool -- 121)   at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:676)
2021-07-13 05:05:01,837 ERROR [stderr] (ServerService Thread Pool -- 121)   at org.springframework.context.support.AbstractApplicationContext.__refresh(AbstractApplicationContext.java:558)
2021-07-13 05:05:01,837 ERROR [stderr] (ServerService Thread Pool -- 121)   at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:41010)
2021-07-13 05:05:01,837 ERROR [stderr] (ServerService Thread Pool -- 121)   at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:144)
2021-07-13 05:05:01,837 ERROR [stderr] (ServerService Thread Pool -- 121)   at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:85)
2021-07-13 05:05:01,837 ERROR [stderr] (ServerService Thread Pool -- 121)   at com.prescient.stnmm.server.beans.BeanAccess.<init>(BeanAccess.java:124)

【问题讨论】:

你有'spring-webmvc'依赖吗? 请使用代码标签添加完整的堆栈跟踪。另外,您如何运行/部署此应用程序? (我怀疑您正在部署到 Oracle WebLogic)。 是的 'spring-webmvc' 依赖存在。 @M.Deinum 我有 bean jar 文件,它是 ear 的一部分并将其部署在 Jboss EAP 7.2 上 他们的问题在于你。你和战争一样在两个耳朵里都有同样的罐子。导致类加载问题(不同类加载器中的同一个类不是同一个类,因此会出错)。 【参考方案1】:

在我看来,即使您只使用一个版本,我认为存在内部混淆依赖版本......这导致了依赖关系之间的困难和冲突。

确保您检查了本地所有版本的依赖项。无论如何,我仍在研究更好的答案。

【讨论】:

是的,你是对的,我的 maven 项目都将“spring-webmvc”作为依赖项,这会导致混乱。【参考方案2】:

下面是我的应用程序的耳朵结构 '样品.jar' '第一次战争' '第二次战争'

在 sample.jar 文件中,我定义了从“secondWar.war”项目初始化的 bean。项目,即 sample.jar 和“secondWar.war”具有相同的依赖关系,即“spring-webmvc”,这导致了混乱。从“secondWar.war”中删除了这个依赖,它现在正在工作**

【讨论】:

以上是关于从类路径资源解析 XML 文档时出现意外异常的主要内容,如果未能解决你的问题,请参考以下文章

org.springframework.beans.factory.BeanDefinitionStoreException:从 ServletContext 资源解析 XML 文档时出现意外异常

转换 XML 文件时出现“禁止 DTD”异常

从类路径资源(XML 文件)获取输入流

Spring - 从类路径资源 [Beans.xml]-NoClassDefFoundError 加载 XML bean 定义

Glassfish RAR5035:从池中销毁资源时出现意外异常

单击 django 中的 href 链接时出现意外/不需要的 url 路径