本文主要是介绍spring读取applicationContext.xml,加载xsd错误,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
maven打包后启动程序遇到遇到解析spring的applicationContext.xml文件报错,错误如下:
org.xml.sax.SAXParseException: schema_reference.4: Failed to read schema document 'http://www.springframework.org/schema/beans/spring-beans-2.0.xsd', because 1) could not find the document; 2) the document could not be read; 3) the root element of the document is not <xs |
这是因为maven打包时,并没有将程序中spring jar包中的META-INF目录下的spring.schemas文件中的内容采用追加模式,而是采用覆盖策略。
可能你的maven pom.xml打包配置如下:
<plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <mainClass></mainClass> </manifest> </archive> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> |
这是因为这样的配置采用的模式是文件覆盖,打包后spring-schema的内容丢失。
网上的许多帖子上给出的解决方案,但是并解决(有可能是自己mvn包的原因,shade的jar包下载下来的),程序无法识别:org.apache.maven.plugins.shade.resource.AppendingTransformer类。
maven-shade-plugin插件配置如下: <plugin>
|
最后,本人把<transformer>配置去掉,结果spring. schemas的内容采用了追加方式。
但是本人的项目依然没有运行成功,最后自己采用无依赖的jar,手动将依赖jar包复制到项目中,才解决了问题。
这篇关于spring读取applicationContext.xml,加载xsd错误的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!