我有一个基于Spring的应用程序,该程序执行组件/程序包扫描以查找特定名称空间中的程序包。该应用程序可以在Eclipse中完美运行,我想创建一个可执行的JAR部署到我们的各种环境中。
我尝试了各种方法来使它起作用,但是唯一起作用的是是否将依赖项包含在JAR之外的文件夹中。到目前为止,这是我尝试过的-
“ java –jar jarName.jar”
我收到一条错误说明-“错误:配置问题:无法为XML模式名称空间http://www.springframework.org/schema/context找到Spring
NamespaceHandler ”
这还将构建一个jar,其中的依赖项作为其中的类。运行jar时,出现相同的“错误:配置问题:无法为XML模式名称空间找到Spring
NamespaceHandler
[http://www.springframework.org/schema/context]
”
这将构建一个jar,其中的依赖项作为JAR(而不是类)。运行此JAR时,出现以下错误–
“无法搜索URL [rsrc:com / company
/]下的匹配文件,因为它与文件系统java.io.FileNotFoundException中的目录不对应:URL [rsrc:com / company
/]无法解析为绝对文件路径因为它不驻留在文件系统中:rsrc:com / company
/,位于org.springframework.util.ResourceUtils.getFile(ResourceUtils.java:210”
因此,JAR运行了,但无法扫描我要它查找的组件。
这将创建一个小的JAR,旁边是一个文件夹,其中包含所有依赖项(作为JAR)。当我运行此命令时,一切正常!
因此,我认为这与我的代码无关,而包装弹簧似乎在单个JAR中进行扫描就没有问题。正确吗?
有人对如何构建将包/组件扫描到单个可运行JAR中的基于spring的应用程序有任何建议吗?
回答 :
我将以下XML添加到我的POM文件中,并仅使用了“ mvn包”,它创建了一个有效的可执行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插件创建uberjar。 这也可以为您提供帮助。
问题内容: 我有一个基于Maven的Spring-WS客户端项目,我希望将其打包为一个jar。在日食中,一切正常运行。当我尝试将其打包为可执行jar时,由于Spring jar不包含在我的应用程序jar中,因此出现ClassNotFound异常。 因此,我添加了maven-shade-plugin以将我的所有依赖项都包含在应用程序jar中。当我查看我的应用程序jar时,会看到包含的所有依赖项中的所
问题内容: 我已经在JCreator中编写了Java程序,一切都已完成,但是我想从中创建一个可执行文件,即,我不想通过加载Java类并编译然后执行来运行程序,而是将其作为独立的可执行文件。 最快的方法是什么? 问题答案: 你可以使用SDK附带的jar工具,并创建该程序的可执行版本。 这就是完成的方式。 我将从命令提示符中发布结果,因为它更容易,但是使用JCreator时也应如此。 首先创建你的程序
问题内容: 我想从我的Python项目创建一个可执行文件。用户无需安装Python就可以下载并运行它。如果我只是分发软件包,则可以使用pip,wheel和PyPI进行构建和分发,但这需要用户具有Python并且知道如何安装软件包。我可以用什么来从Python项目构建一个自包含的可执行文件? 问题答案: 这是一些常见的。除非明确指出,否则截至我上次编辑(2020年1月)时,下面列出的所有项目都将得到
问题内容: 伙计们,我的模块中有很多python代码,这些模块位于多个python软件包中,现在我需要创建一个包含所有这些文件的python可执行模块或文件,因此它将在Windows和Linux服务器上运行。有哪些可能的解决方案,以及如何解决? 问题答案: 这就是鸡蛋文件的用途。请阅读以下内容:将python库/应用程序打包为.egg文件有什么好处?
问题内容: 我想创建一个jar文件来执行,该文件是使用java和clojure实现的。这是我采取的步骤。 使我的Java代码调用clojure代码 我可以生成一个具有clojure核心和我的clojure代码的jar文件(ThingOne-1.0.0-SNAPSHOT- standalone.jar),并且我还可以得到一个使用jar文件中使用clojure代码的类文件(HelloJava.clas
我对NodeJS是新手。我已经执行了以下命令。1.npm安装-g创建react应用程序2。创建react应用程序我的应用程序 在执行第二个命令时,我遇到了如下错误 安装软件包。这可能需要几分钟。正在安装react、react dom和react脚本。。。 uglifyjs-webpack-plugin@0.4.6安装后E:\Projects\HighAvenue\Dashboard\dashboa