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

Java 如何在不修改应用程序(xxx.jar)的情况下使用类路径上的额外文件运行Spring引导应用程序,java,spring-boot,classpath,Java,Spring Boot,Classpath,我想运行一个Spring启动应用程序,其中一个额外的文件恰好是类路径上的css。我无法触摸罐子和应用程序本身。我只能修改开始脚本 我已收到应用程序的启动脚本:: #! /bin/sh commandline="java -jar xxx-1.0.0.jar" commandline="$commandline --spring.config.location=../config/xxx.properties" commandline="$commandline --logging.config=

我想运行一个Spring启动应用程序,其中一个额外的文件恰好是类路径上的css。我无法触摸罐子和应用程序本身。我只能修改开始脚本

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

#! /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不兼容。这里有一个很好的解释:

然后我找到了使用PropertiesLauncher+loader.path的建议,它可以被看作是命令行上类路径的替代品。然而,为了使用PropertiesLauncher,示例建议修改pom,我不能这样做

我能做的就是修改shell脚本


如果在不修改Spring Boot应用程序的情况下可以将额外的文件放到类路径上,我该怎么做?

我找到了这篇文章,它展示了如何在不修改pom.xml的情况下使用PropertiesLauncher而不修改应用程序:

因此,通过上面的操作,我可以向类路径添加一个额外的文件夹,它确实可以工作:

#! /bin/sh
commandline="java -Dloader.path=../css -cp xxx-1.0.0.jar org.springframework.boot.loader.PropertiesLauncher"
commandline="$commandline --spring.config.location=../config/xxx.properties"
commandline="$commandline --logging.config=../config/log4j2.xml"
$commandline

我发现了这篇文章,它展示了如何在不修改pom.xml的情况下使用PropertiesLauncher而不修改应用程序:

因此,通过上面的操作,我可以向类路径添加一个额外的文件夹,它确实可以工作:

#! /bin/sh
commandline="java -Dloader.path=../css -cp xxx-1.0.0.jar org.springframework.boot.loader.PropertiesLauncher"
commandline="$commandline --spring.config.location=../config/xxx.properties"
commandline="$commandline --logging.config=../config/log4j2.xml"
$commandline

这也适用于我:

#! /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更简单。

这也适用于我:

#! /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更简单