一尘不染

在运行时将jar动态添加到SpringBoot

spring-boot

我正在使用SpringBoot
1.4.2。我希望能够从命令行启动SpringBoot应用程序,并指定其他外部jar,在我启动应用程序时也应对其进行组件扫描。我无法使用,spring- boot-maven-plugin因为当我要启动它时,我将没有spring boot应用程序的pom。

到目前为止,我已经尝试了以下操作,my-jar.jarSpring Boot应用程序在哪里,external- jar.jar我想在命令行中包含的外部jar是:

java -cp my-jar.jar -Dloader.path=external-jar.jar -Dloader.main=com.my.Application org.springframework.boot.loader.JarLauncher

这将启动但不进行组件扫描 external-jar.jar

java -cp external-jar.jar:my-jar.jar -Dloader.main=com.my.Application org.springframework.boot.loader.JarLauncher

这无法启动,表示即使满足@Autowiredin的条件external-jar.jar也不能满足in的条件my- jar.jar。我试过颠倒类路径上jar的顺序,这不能解决问题。

java -Dloader.path="external-jar.jar" -jar my-jar.jar

这将启动但不进行组件扫描 external-jar.jar

我在SpringApplication类顶部的组件扫描路径有两个包路径my-jar.jarexternal- jar.jar并且我已经验证了external-jar.jar直接在pom中引用时它是组件扫描的。


阅读 3928

收藏
2020-05-30

共1个答案

一尘不染

您使用了错误的启动器。支持loader.pathloader.main被提供PropertiesLauncher,但你使用JarLauncher

2020-05-30