Java:Spring:阅读spring context.xml时出现XML冲突重复定义:’identifiedType’

前端之家收集整理的这篇文章主要介绍了Java:Spring:阅读spring context.xml时出现XML冲突重复定义:’identifiedType’前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

任何建议或帮助非常感谢.

有许多参考链接,但没有明确的解决方案.我想知道Spring项目如何与返回XMLType输出的PLsql过程交互.你需要XMLParser,然后我们都会在使用Spring时遇到这个错误.有没有人有任何建议?

我有一个运行良好的Maven spring应用程序(mvc / Rest),我添加了以下依赖项来与PLsql程序进行交互,

    

包含xdb6和xmlparserv2后,我在Spring应用程序启动时遇到以下错误(运行服务器时)

2014-08-19 18:28:51,898 INFO |主要| o.s.beans.factory.xml.XmlBeanDefinitionReader

Loading XML bean definitions from class path resource [META-INF/spring/myapp-context.xml] 


来自类路径资源[META-INF / spring / myapp-context.xml]的XML文档中的第16行无效;

MYAPP-的context.xml

Line16是http://www.springframework.org/schema/cache/spring-cache.xsd\”\u0026gt;

假设我删除了Line16及其引用,然后在不同的行抛出相同的错误,比如第13行

更多错误堆栈跟踪:

Caused by: org.xml.sax.SAXParseException: 

更新1

根据公布的答案,它说可以提供快速解决方案,

要覆盖xmlparserv2.jar所做的更改,请将以下JVM属性添加到应用程序服务器启动参数中. java.xml.parsers.FactoryFinder逻辑将首先检查环境变量.

-Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl

 -Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl

 -Djavax.xml.transform.TransformerFactory=com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl

如链接中明确指出的那样,不建议这样做
https://community.oracle.com/thread/1080787

这里提到了另一种解决方案(与hibernate相关,但类似):Using Oracle XMLType column in hibernate

在maven spring项目中,通过在%PROJECT_HOME%/ src / main / resources目录中创建以下文件来覆盖xmlparserv2.jar设置:

%PROJECT_HOME%/src/main/resources/Meta-INF/services/javax.xml.parsers.DocumentBuilderFactory (which defines com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl as the default)
%PROJECT_HOME%/src/main/resources/Meta-INF/services/javax.xml.parsers.SAXParserFactory (which defines com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl as the default)
%PROJECT_HOME%/src/main/resources/Meta-INF/services/javax.xml.transform.TransformerFactory (which defines com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl as the default)

这对我来说并不清楚.

如何将这些文件删除到上述目录?这是推荐的解决方案吗?

更新2

我尝试添加VM参数-Djavax.xml.parsers.DocumentBuilderFactory = com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl并且它可以工作.

但是寻找替代的,更合适的解决方案.这只是一种解决方法.当应用程序通过Jenkins部署到服务器时,不适合设置与XML解析器相关的这些VM参数设置.

更新3

@Ian Roberts的答案解决了这个问题.我清理了context.xml以始终使用xsd的版本号.

最佳答案
schemaLocation是版本化(spring-beans-3.2.xsd)和unversioned(spring-tx.xsd)模式名称的混合.您应该始终使用一种风格或另一种风格,而不是将两者混合使用.我怀疑这里发生的是你明确指的是spring-beans的3.2版本,但是你的一个未版本化的模式导入了同一模式的不同版本,导致了两个相互矛盾的bean定义:identifiedType.
原文链接:https://www.f2er.com/spring/432044.html

猜你在找的Spring相关文章