spring.handlers、spring.schemas、spring.tooling被覆蓋的三種解決方式


    在用到spring時,本地IDE里面跑的很正常,但是打jar包后在集群上運行時報錯。

    查找資料后確定了問題的根源,由於在依賴中調用了spring的許多包,每個包都有自己的spring.schemas文件,會存在文件覆蓋的情況。

報錯信息為:

Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace

解決方法:

方法一:

    修改maven的settings.xml文件,在鏡像中添加

<mirror>
  <id>repo2</id>
  <mirrorOf>central</mirrorOf>
  <name>Human Readable Name for this Mirror.</name>    
  <url>http://repo2.maven.org/maven2/</url>
</mirror>

    添加到<mirrors>與</mirrors>之間,注意原先是被注釋掉的,要在<mirrors>后面粘貼上

方法二:

    使用maven的打包插件maven-shade-plugin,把spring.handlers、spring.schemas、spring.tooling三個文件設置成增量保存模式,即Appending

    在maven的pom.xml中,在<project>和</project>之間加上下面的代碼

<plugin>  
    <groupId>org.apache.maven.plugins</groupId>  
    <artifactId>maven-shade-plugin</artifactId>  
    <version> 1.7.1</version>  
    <executions>  
        <execution>  
            <phase>package</phase>  
            <goals>  
                <goal>shade</goal>  
            </goals>  
            <configuration>  
                <transformers>  
                    <transformer  
                        implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">  
                        <resource>META-INF/spring.handlers</resource>  
                    </transformer>  
                    <transformer  
                        implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">  
                        <resource>META-INF/spring.schemas</resource>  
                    </transformer>  
                    <transformer  
                        implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">  
                        <mainClass>com.chenzhou.test.Main</mainClass>  
                    </transformer>  
                </transformers>  
            </configuration>  
        </execution>  
    </executions>  
</plugin>

    然后在maven窗口的plugin中即可找到package,就是這個打包工具

方法三:

    這種方法比較小白,操作簡單,無論怎么打包,用什么工具,只要找到spring.handlers、spring.schemas、spring.tooling這三個文件,用我提供的這三個完整的文件覆蓋即可

    一般來說,打完包之后,這三個文件都在jar包下面的META-INF路徑下,直接復制完整文件到這個目錄下覆蓋即可

    下載鏈接為http://files.cnblogs.com/files/starwater/spring.zip  包含了spring.handlers、spring.schemas、spring.tooling這三個完整的文件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM