2016-12-14 39 views
0

我正在使用SpringBoot 1.4.2。我希望能够从命令行启动我的SpringBoot应用程序,并指定在启动应用程序时还应对其进行组件扫描的其他外部jar。我不能使用spring-boot-maven-plugin,因为当我想启动它时,我不会有弹簧引导应用程序的pom。在运行时动态添加罐子到SpringBoot

我曾尝试以下,到目前为止,其中my-jar.jar是弹簧启动应用程序和external-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 

这启动失败,称external-jar.jar@Autowired条件不满意,即使在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时,我已经验证了我的它是组件扫描。

回答

1

您使用的是错误的启动器。支持loader.pathloader.mainPropertiesLauncher提供,但您使用的是JarLauncher

+0

我真的不能够感谢你! 'java -cp my-jar.jar -Dloader.path = external-jar.jar -Dloader.main = com.my.Application org.springframework.boot.loader.PropertiesLauncher' works – user783836