gpt4 book ai didi

java - 如何在不修改应用程序(xxx.jar)的情况下使用类路径上的额外文件运行 Spring Boot 应用程序

转载 作者:行者123 更新时间:2023-11-29 08:32:47 24 4
gpt4 key购买 nike

我想运行一个 Spring Boot 应用程序,在类路径上有一个额外的文件(恰好是一个 css)。我无法触摸 jar (应用程序本身)。我只能修改启动脚本。

我收到了应用程序的启动脚本::

#! /bin/sh
commandline="java -jar xxx-1.0.0.jar"
commandline="$commandline --spring.config.location=../config/xxx.properties"
commandline="$commandline --logging.config=../config/log4j2.xml"
$commandline

我天真的第一次尝试是用 -cp 添加一个文件夹并将文件放入该文件夹。然而,这不起作用,因为 -cp 和 -jar 不兼容(这里有很好的解释:Differences between "java -cp" and "java -jar"?)

然后我找到了使用 PropertiesLauncher + loader.path 的建议,它可以被视为命令行上类路径的替代品 (https://docs.spring.io/spring-boot/docs/current/reference/html/executable-jar.html#executable-jar-property-launcher-features)。但是要使用 PropertiesLauncher,示例建议修改 pom,我不能这样做 (Spring Boot: Is it possible to use external application.properties files in arbitrary directories with a fat jar?)

我能做的就是修改shell脚本。

我应该如何(如果可能的话)在不修改 Spring Boot 应用程序的情况下将额外的文件放到类路径中?

最佳答案

这也适用于我:

#! /bin/sh
commandline="java -cp ../css:xxx-1.0.0.jar org.springframework.boot.loader.JarLauncher"
commandline="$commandline --Spring.config.location=../config/xxx.properties"
commandline="$commandline --logging.config=../config/log4j2.xml"
$commandline

在我的例子中,这似乎比使用 PropertiesLauncher 更简单。

关于java - 如何在不修改应用程序(xxx.jar)的情况下使用类路径上的额外文件运行 Spring Boot 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46582679/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com