【问题标题】:SpringBoot can't read application.properties when running outside jar folderSpring Boot 在 jar 文件夹外运行时无法读取 application.properties
【发布时间】:2019-02-19 17:25:58
【问题描述】:

我创建了一个 SpringBoot 应用程序,并将 application.properties 放在 jar 文件的同一文件夹中。这是文件的内容:

server.port=8081

当我运行 /bin/java -jar /opt/apl/org.web.exemlo-java-maven.1.0.0-90/org.web.exemlo-java-maven-1.0.0-90.jar在 jar 文件夹之外,它不会读取 application.properties 并在端口 8080 中运行程序。

当我运行 /bin/java -jar /opt/apl/org.web.exemlo-java-maven.1.0.0-90/org.web.exemlo-java-maven-1.0.0-90.jar在 jar 文件夹内(或在任何带有 application.properties 的文件夹内)它读取文件并在端口 8081 中运行。

发生了什么?我认为属性文件需要与 jar 文件位于同一位置。但碰巧它需要在我运行命令的同一个文件夹中。

【问题讨论】:

标签: java spring-boot


【解决方案1】:

按照惯例,Spring Boot 在应用程序启动时会在类路径根目录中查找 application.properties 文件,例如JAR 文件中的顶级目录结构。从 cmdline 启动应用程序时,您可以自定义此行为并使用 Spring 特定的环境属性配置不同的 application.properties 位置:

/bin/java -jar /opt/apl/org.web.exemplo-java-maven.1.0.0-90/org.web.exemplo- 
java-maven-1.0.0-90.jar --spring.config.location=classpath:/other- 
application.properties

检查这个:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-application-property-files

【讨论】:

  • 所以,如果我需要使用我的 app 文件夹中的相同属性,我可以这样做吗?:--spring.config.location=classpath:/opt/apl/org.web .exemlo-java-maven.1.0.0-90
  • @EduardoDias 你应该使用 --spring.config.location=file://.... 而不是 classpath:/ 阅读 spring 文档了解详细信息 => docs.spring.io/spring/docs/current/spring-framework-reference/…
猜你喜欢
  • 1970-01-01
  • 2020-07-08
  • 1970-01-01
  • 2021-03-05
  • 2019-05-31
  • 1970-01-01
  • 2017-08-31
  • 2017-11-03
  • 2017-10-07
相关资源
最近更新 更多