笔记——使用idea 打jar包,报错找不命名空间处理器NamespaceHandler

问题描述:

笔记——使用idea 打jar包,报错找不命名空间处理器NamespaceHandler_第1张图片

1、Spring启动流程中,获取beanfatory的时候会进行xml文件的读取,其中命名空间与xml校验使用了META-INF下的文件:

以beans举例:

笔记——使用idea 打jar包,报错找不命名空间处理器NamespaceHandler_第2张图片

笔记——使用idea 打jar包,报错找不命名空间处理器NamespaceHandler_第3张图片

理论上应该长上面那样。但是我打的jar包里面:

笔记——使用idea 打jar包,报错找不命名空间处理器NamespaceHandler_第4张图片

导出为可运行jar包时,多个spring jar包同时有,spring.handlers、spring.schemas、spring.tooling三个文
件,但是打成jar包时在META-INF/下只能留一份,这时需要将多个文件中的内容合并在一个文件中。

解决方式

使用maven打包方式。

    
        
            
                org.apache.maven.plugins
                maven-shade-plugin
                1.7
                
                    
                        package
                        
                            shade
                        
                        
                            my-spring-app
                            true
                            jar-with-dependencies
                            
                                
                                    com.suirui.WebsocketServer
                                
                                
                                    META-INF/spring.handlers
                                
                                
                                    META-INF/spring.schemas
                                
                                
                                    META-INF/spring.tooling
                                
                            
                        
                    
                
            
        
    

使用maven-shade-plugin会使用默认的1.5版本编译。需要修改默认编译版本。

${MAVEN_HOME}/conf/setting.xml中改变默认的编译版本,激活profile:


       
        jdk1.8
           
            true
            1.8   
        
           
            1.8
            1.8
            1.8
            UTF-8
           
    
 

 

你可能感兴趣的:(笔记)