使用-Dloader.path =运行jar可以,但是application.properties loader.path无效

时间:2019-05-16 23:10:28

标签: java spring spring-boot jar

我在/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

0 个答案:

没有答案