Запуск jar с -Dloader.path = работает, но не application.properties loader.path - PullRequest
1 голос
/ 17 мая 2019

У меня есть файл внешних свойств в /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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...