Spring导出可以运行的jar包问题如何解决
导读:本文共3258字符,通常情况下阅读需要11分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 最近需要解决Maven项目导入可执行的jar包的问题,如果项目不包含Spring,那么使用mvn assembly:assembly即可可是如果包含Spring,那么这么方法就不可行,报错:Configurationproblem:UnabletolocateSpringNamespaceHandlerforXMLschemanamespace我在网上折腾了两天... ...
目录
(为您整理了一些要点),点击可以直达。最近需要解决Maven项目导入可执行的jar包的问题,如果项目不包含Spring,那么使用mvn assembly:assembly即可
可是如果包含Spring,那么这么方法就不可行,报错:
我在网上折腾了两天,这是assembly的一个bug。
据说原因是spring的多个jar包中都含有spring.handlers和spring.schemas文件,而assembly只会把第一次遇到的文件打入jar包,后面遇到的都会skip掉。
解决方法就是放弃assembly,使用shade插件来打包.在shade的打包配制中指明spring.handlers和spring.schemas文件会以append方式加入进来,从而确保其他spring的jar中的这两个文件的信息不会被遗漏。
下面是一个非常简单的例子,只有四个文件的Maven工程,代码再附件内:
在命令行运行:mvn package
然后在target目录会产出一个jar包:my-spring-app.jar
运行即可:java -jar target/my-spring-app.jar
当然也可以这么运行:java -classpath target/my-spring-app.jar com.exec.Main
Spring导出可以运行的jar包问题如何解决的详细内容,希望对您有所帮助,信息来源于网络。