Java 如何在spring应用程序中重用runnable jar文件
我有一个spring boot应用程序,我用Java 如何在spring应用程序中重用runnable jar文件,java,spring-boot,maven,Java,Spring Boot,Maven,我有一个spring boot应用程序,我用mvn包编译它,并用java-jar target/springapp.jar运行它,然后我得到了错误(当我调用url时):java.lang.ClassNotFoundException:Lab.Plant.Plant。springapp使用Lab.Plant.Plant类中的一个函数 我使用了一个名为Lab.Plant的自创建jar文件,并将其存储在${project.basedir}/lib/中 我在eclipse中将Lab.Plant导出为可运
mvn包编译它,并用java-jar target/springapp.jar
运行它,然后我得到了错误(当我调用url时):java.lang.ClassNotFoundException:Lab.Plant.Plant
。springapp使用Lab.Plant.Plant
类中的一个函数
我使用了一个名为Lab.Plant
的自创建jar文件,并将其存储在${project.basedir}/lib/
中
我在eclipse中将Lab.Plant
导出为可运行jar文件,并将所需库提取到生成的jar
中,然后在springapppom.xml
文件中添加jar依赖项
...
实验室
种植
0.0.1-快照
系统
${project.basedir}/lib/plant.jar
...
它在SpringBootSuite IDE中运行良好,但在java-jar
中运行不佳。我是不是误解了什么
谢谢 您需要将依赖项打包到jar文件中。然后可以使用
java
cmd运行它。更改maven pom.xml,在下面添加,然后运行mvn包
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
maven汇编插件
3.3.0
带有依赖项的jar
组装
包裹
单一的
或者您可以在cmd行中调用带有依赖项的mvn assembly:assembly-DdescriptorId=jar SpringBootMaven插件默认情况下忽略了系统范围依赖项,这是一件好事,因为系统范围依赖项通常是错误的提示。为什么使用系统范围的依赖项?这种依赖来自哪里?从maven版本开始?您是否在公司环境中工作:如果是,应该部署到存储库管理器并从那里使用…首先使用非常旧的版本,其次在生命周期中配置它,而不是称之为
mvn clean package
。@khmarbaise,您是对的,我从某处复制它,未检查版本。此外,使用maven assembly插件打包spring boot应用程序将不起作用,因为布局与使用依赖项描述符定义的jar不同。