【问题标题】:Dynamically add jars to SpringBoot at runtime在运行时将 jars 动态添加到 SpringBoot
【发布时间】:2017-04-30 02:56:48
【问题描述】:

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

到目前为止,我已经尝试了以下方法,其中 my-jar.jar 是 spring 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

这无法启动,说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 的包路径,并且我已经验证,当直接在我的 pom 中引用 external-jar.jar 时,它是组件扫描的。

【问题讨论】:

    标签: spring spring-boot


    【解决方案1】:

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

    【讨论】:

    • 我真的不能感谢你! java -cp my-jar.jar -Dloader.path=external-jar.jar -Dloader.main=com.my.Application org.springframework.boot.loader.PropertiesLauncher 工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 2018-05-19
    • 1970-01-01
    • 2017-04-22
    • 2011-09-30
    • 1970-01-01
    相关资源
    最近更新 更多