Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace 解决方法

时间:2023-03-09 16:07:40
Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace 解决方法

这个问题是在用到spring时,本地IDE里面跑的很正常,但是打包后在集群上运行时报错。

多方查找资料后确定了问题的根源,由于在依赖中调用了spring的许多包,会存在文件覆盖的情况。

具体是

Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace 解决方法

这三个文件。查看后,只剩下tx的配置了。

解决方法

第一种方法是使用maven的打包插件,在里面保留各个spring包的配置信息:

  1. <plugin>
  2. <groupId>org.apache.maven.plugins</groupId>
  3. <artifactId>maven-shade-plugin</artifactId>
  4. <version> 1.7.1</version>
  5. <executions>
  6. <execution>
  7. <phase>package</phase>
  8. <goals>
  9. <goal>shade</goal>
  10. </goals>
  11. <configuration>
  12. <transformers>
  13. <transformer
  14. implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
  15. <resource>META-INF/spring.handlers</resource>
  16. </transformer>
  17. <transformer
  18. implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
  19. <resource>META-INF/spring.schemas</resource>
  20. </transformer>
  21. <transformer
  22. implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
  23. <mainClass>com.chenzhou.test.Main</mainClass>
  24. </transformer>
  25. </transformers>
  26. </configuration>
  27. </execution>
  28. </executions>
  29. </plugin>

但是这种方法限制只能用这种maven插件打包,实际上,只要这三个文件能够包含完整的配置信息就行了

第二种方法其实很简单,找到这三个文件,用我提供的这三个完整的文件覆盖即可。

通常,这三个文件都在jar包下面的META-INF路径下

下载链接为http://files.cnblogs.com/files/starwater/spring.zip