从基于Spring的Java应用程序创建单个可执行JAR
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了从基于Spring的Java应用程序创建单个可执行JAR,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2638字,纯文字阅读大概需要4分钟。
内容图文
![从基于Spring的Java应用程序创建单个可执行JAR](/upload/InfoBanner/zyjiaocheng/701/9763f124f9714cf79ae358da6e45752e.jpg)
我有一个基于spring的应用程序,它执行组件/包扫描,查找特定命名空间内的包.该应用程序在Eclipse中运行完美,我想创建一个可执行的JAR来部署到我们的各种环境.
我已经尝试了各种方法来实现这一点,但唯一可行的是,如果我将依赖项包含在JAR之外的文件夹中.这是我到目前为止所尝试的 –
> Maven从here编译到一个jar,使用这种方法创建单个JAR,并将依赖项作为类包含在内.使用时运行JAR –
“java -jar jarName.jar”
我得到一个错误说明 – “错误:配置问题:无法找到XML架构命名空间http://www.springframework.org/schema/context]的Spring NamespaceHandler”
>使用Eclipse中的Export’As Runnable JAR file’,并在Library Handling部分选择’Extract required libraries to generated JAR’.
这也构建了一个jar,其依赖关系作为其中的类.运行jar时,我得到相同的“错误:配置问题:无法找到XML架构命名空间的Spring NamespaceHandler [http://www.springframework.org/schema/context]”
>使用Eclipse中的Export’As Runnable JAR file’,并在Library Handling部分选择’将所需的库打包到生成的JAR’.
这构建了一个jar,其中的依赖关系作为JAR(而不是类).当我运行此JAR时,我收到以下错误 –
“无法在URL [rsrc:com / company /]下搜索匹配的文件,因为它与文件系统java.io.FileNotFoundException中的目录不对应:URL [rsrc:com / company /]无法解析为绝对文件路径因为它不驻留在文件系统中:rsrc:com / company / at org.springframework.util.ResourceUtils.getFile(ResourceUtils.java:210“
所以JAR运行但无法扫描我要求它找到的组件.
>使用Eclipse中的Export’As Runnable JAR file’,并在Library Handling部分选择’将所需的库复制到生成的JAR旁边的子文件夹’.
这将创建一个小JAR,其旁边有一个文件夹,其中包含所有依赖项作为JAR.当我运行它时,一切正常!
因此,我不认为这是我的代码的问题,包装弹簧在单个JAR中进行扫描似乎存在问题.这是对的吗?
有没有人对如何构建基于弹簧的应用程序进行包/组件扫描到单个可运行的JAR有任何建议?
回答:
我将以下XML添加到我的POM文件中并且只使用了“mvn package”,它创建了一个可用的单个可执行jar.它的工作原理仍然是个谜.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.company.project.MainApp</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>
解决方法:
使用Maven Shade Plugin创建uberjar.
This也可以帮到你.
内容总结
以上是互联网集市为您收集整理的从基于Spring的Java应用程序创建单个可执行JAR全部内容,希望文章能够帮你解决从基于Spring的Java应用程序创建单个可执行JAR所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。