У меня есть файл внешних свойств в /config/application.properties, из которого я получаю свойства. Когда я запускаю свой jar, он может выбрать из него определенные свойства (например, server.port = 8083)
Это структура моих файлов / папок:
ProjectFolder
|
+-- mytool.jar
|
+-- config
| |
| +-- application.properties
|
+-- lib
| |
| +-- externalJar.jar
Теперь проблема в том, что мне нужно свойство "loader.path" из файла внешних свойств, все остальные свойства загружаются правильно, за исключением loader.path, когда я запускаю jar с:
java -jar mytool.jar
Внутри внешнего приложения. Свойства содержат:
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, отображаемый при загрузке, является тем, который я специально указал.
Я изменил проект для использования PropertiesLauncher в Maven.
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