我在/config/application.properties下有一个外部属性文件,可从中检索属性。运行jar时,它可以从中获取某些属性(例如server.port = 8083)
这是我的文件/文件夹的结构:
ProjectFolder
|
+-- mytool.jar
|
+-- config
| |
| +-- application.properties
|
+-- lib
| |
| +-- externalJar.jar
现在,问题是我需要外部属性文件中的属性“ loader.path”,当我使用以下命令运行jar时,除loader.path之外的所有其他属性都已正确加载:
java -jar mytool.jar
在外部application.properties内部包含:
spring.servlet.multipart.enabled=false
server.port = 8083
logging.file = /someplace/
loader.path=lib
由于它没有加载externalJar.jar,因此遇到classNotFoundExceptions。
但是,奇怪的是,当我使用以下命令启动应用程序时:
java -Dloader.path=lib -jar mytool.jar
一切正常。
我是否缺少application.properties文件? 我尝试使用完整路径:
loader.path=/home/me/ProjectFolder/lib
但是那也不起作用。 我相信正在读取application.properties,因为引导时显示的server.port号是我专门指定的。
我将项目更改为使用Maven中的PropertiesLauncher。 MANIFEST.MF
Manifest-Version: 1.0
Implementation-Title: mytool
Implementation-Version: 0.0.1-SNAPSHOT
Built-By: giraffepoo
Implementation-Vendor-Id: com.sap
Spring-Boot-Version: 2.1.3.RELEASE
Main-Class: org.springframework.boot.loader.PropertiesLauncher
Start-Class: com.sap.mytool
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_201
Implementation-URL: https://projects.spring.io/spring-boot/#/spring-bo
ot-starter-parent/mytool
如果有人可以向我指出正确的方向,我们将不胜感激。谢谢!
注意: 不确定是否相关,但是当应用程序以覆盖的方法启动时,会立即使用externalJar.jar:contextInitialized