Java 如何在spring应用程序中重用runnable jar文件

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导出为可运

我有一个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
导出为可运行jar文件,并将所需库提取到生成的jar
中,然后在springapp
pom.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不同。