首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

maven使用assembly打可执行jar包启动时报错(关于spring异常的解决办法)

2014-01-05 
maven使用assembly打可执行jar包启动时报错(关于spring错误的解决方法)错误:Configuration problem: Unabl

maven使用assembly打可执行jar包启动时报错(关于spring错误的解决方法)

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

原因:assembly的一个bug.参见:http://jira.codehaus.org/browse/MASSEMBLY-360 原因是spring的多个jar包中都含有spring.handlers和spring.schemas文件,而assembly只会把第一次遇到的文件打入jar包,后面遇到的都会skip掉。

办法:使用shade插件来打包.在shade的打包配制中指明spring.handlers和spring.schemas文件会以append方式加入进来,从而确保其他spring的jar中的这两个文件的信息不会被遗漏。下面是一份配置的例子:

<build>  <plugins>  <plugin>           <groupId>org.apache.maven.plugins</groupId>           <artifactId>maven-shade-plugin</artifactId>           <version>2.2</version>           <executions>                 <execution>                  <phase>package</phase>                   <goals>                    <goal>shade</goal>                   </goals>               <configuration>                     <transformers>                       <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">                        <mainClass>com.faquir.read.main.App</mainClass>                      </transformer>                      <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>                       </transformers>               </configuration>                </execution>           </executions>        </plugin>  </plugins>  </build>

?

热点排行