使用assembly打出的独立可执行jar包启动时报错spring错误的解决方法

news/2025/2/26 7:05:36

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

项目开发使用dubbo,想把服务打成可执行jar包,并将所有的依赖也打包到这个jar文件中,工程依赖使用了spring等,在使用maven的assembly打包成独立可执行的jar包后,在执行时报如下错误:
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掉。
      解决方法就是放弃assembly,使用shade插件来打包.在shade的打包配制中指明spring.handlers和spring.schemas文件会以append方式加入进来,从而确保其他spring的jar中的这两个文件的信息不会被遗漏。下面是一份配置的例子:

 		    <plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-shade-plugin</artifactId>
				<version>1.4</version>
				<executions>
					<execution>
						<phase>package</phase>
						<goals>
							<goal>shade</goal>
						</goals>
						<configuration>
							<transformers>
								<transformer
									implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
									<mainClass>activiti.server.deploy.Server</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>

右击工程,运行mvn install 即可打包成功。

转载于:https://my.oschina.net/ydsakyclguozi/blog/417637


http://www.niftyadmin.cn/n/3783167.html

相关文章

#import和#include的区别

2019独角兽企业重金招聘Python工程师标准>>> &#xff03;import和&#xff03;include的区别import引入的头文件&#xff0c;可以防止重复包含 include它是使用预处理指令防止重复包含&#xff0c;如果没有写预处理指令&#xff0c;则无法防止重复包含问题 2. &…

表单的总结

input type"reset" 设定这个属性可以快速重置form中其它填写的input值。input type"sumbit" 提交按钮转载于:https://blog.51cto.com/10145212/1653554

异或算法求一个数字重复或不成对 以及正整数转二进制

利用hashset&#xff08;重复的值添不进去 &#xff09;&#xff1a; 利用hashset&#xff08;只要重复了就将值溢出&#xff0c;最后留下的就是不成对出现的&#xff09;&#xff1a; 再将set转化成list&#xff0c;返回list[0]即可 自己转&#xff1a; API&#xff1a;

C++ 11中的auto和decltype

C 11中引入的auto主要有两种用途&#xff1a;自动类型推断和返回值占位。auto在C 98中的标识临时变量的语义&#xff0c;由于使用极少且多余&#xff0c;在C 11中已被删除。 auto自动类型推断&#xff0c;用于从初始化表达式中推断出变量的数据类型。通过auto的自动类型推断&am…

Python基础:集合

集合(set)&#xff1a;把不同的元素组成一起形成集合&#xff0c;是python基本的数据类型。集合分类&#xff1a;可变集合&#xff08;set&#xff09;、不可变集合&#xff08;frozenset&#xff09;&#xff0c;创建方式一样集合特点&#xff1a;无序&#xff0c;唯一&#x…

学堂在线TsinghuaX: 00740043X C++语言程序设计基础 第二章Lab

第一题&#xff1a;简单题目&#xff08;求和&#xff0c;最大值&#xff0c;最小值&#xff09; 题目描述 任意给定n个整数&#xff0c;求这n个整数序列的和、最小值、最大值 输入描述 输入一个整数n&#xff0c;代表接下来输入整数个数&#xff0c;n<100,接着输入n个整数&…

CENTOS 6.5 x64环境下安装二进制版Mongodb- 2.6.11

1. 下载二进制版的安装文件&#xff1a;文件版本&#xff1a;mongodb-linux-x86_64-2.6.11.tgz下载地址&#xff1a;https://www.mongodb.org/downloads整合配置文件模板及服务器安装文件的版本&#xff1a;mongodb-linux-x86_64-2.6.11.tar.gz 2. 解压二进制版安装文件&#x…

给DataTable添加列默认值

"columnDefs": [ { "targets": "_all", "defaultContent": "" } ],转载于:https://www.cnblogs.com/af826/p/5411324.html