当前位置: 首页 > 知识库问答 >
问题:

Spring Boot Jar执行内部属性文件

令狐弘益
2023-03-14

我有一个Spring Boot应用程序,当我从Intellij作为maven配置运行它时,它可以正常运行。

我有一个用属性文件定义的环境的项目结构。

resources/conf/dev/environment.properties
resources/conf/qa/environment.properties
resources/conf/general.properties

等等。

我们的框架的工作方式是选择带有VM参数的env。例如-denv=dev-denv=qa

错误是:

java.io.FileNotFoundException:conf\general.properties(系统找不到指定的路径)

2017-07-11 10:52:52.864  INFO 17896 --- [main] n.lifecycle: Can't find configuration file [conf\general.properties]
2017-07-11 10:52:52.865 ERROR 17896 --- [main] n.lifecycle: configuration file [null] not found (use default properties as error handling)

我尝试使用以下文件:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html,但似乎没有什么可以修复它。也曾尝试使用本指南-http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#executable-jar-launking但也失败了...

指南将属性文件称为“外部”,但我的属性是打包在JAR中的。

共有1个答案

姬英耀
2023-03-14

我已经发现哪里不对劲了。加载资源的内部框架使用file.separator读取资源的路径。

现在,由于某种原因,当使用maven Spring Boot插件创建jar时,类路径是用“/”构建的,例如/c:/users/myuser/projects/myapp/target/myapp-1.0.1.jar!/boot-inf/classes!/(资源当然在jar内部的classes路径中)

当我们试图运行jar时,它试图用'\'读取资源,因此构建的路径是(例如,如果我们选择“dev”)/c:/users/myuser/projects/myapp/target/myapp-1.0.1.jar!/boot-inf/classes!/conf\dev,这就是为什么应用程序无法加载的原因。

我还是不知道为什么会这样。

 类似资料:
  • 问题内容: 我在程序中使用以下代码来加载属性文件: 该代码在Eclipse中运行良好。然后,将程序打包到一个名为MyProgram.jar的JAR中,然后运行它,第二行得到了NullPointerException。JAR不包含属性文件,它们都位于同一目录中。我正在使用Maven创建JAR。我该如何解决这个问题? 更新:我不想将属性文件添加到JAR中,因为它将在部署时创建。 问题答案: Balus

  • 我希望在运行时传递变量,一旦war文件部署在tomcat上。如何使用classplath中的application.properties以及另一个属性文件ex。abcd.properties位于specific directory.am基本上希望设置额外的类路径,并从该路径中的属性文件中读取值,以及war部署的默认类路径位置。 我使用Spring boot。其中一种方法是将所有属性传递到数据库端,

  • 问题内容: 在Swift中,定义公共模式的常规方式是什么,在该模式中,属性是外部只读的,但可以由拥有该属性的类(和子类)在内部进行修改。 在Objective-C中,有以下选项: 在接口中将该属性声明为只读,并使用类扩展名在内部访问该属性。这是基于消息的访问,因此可以很好地与KVO,原子性等配合使用。 在接口中将该属性声明为只读,但在内部访问后备ivar。由于对ivar的默认访问受到保护,因此在类

  • 我也看了几个Youtube视频,但似乎没有一个能解决这个问题。 为什么-属性没有正确地嵌入到jar的清单中,如何修复它?

  • 本文向大家介绍浅谈javascript 函数内部属性,包括了浅谈javascript 函数内部属性的使用技巧和注意事项,需要的朋友参考一下         在函数内部有两个特殊的属性:arguments 和 this。arguments是一个类数组对象,包含传入的所有参数,         但是这个对象还有一个名叫callee的属性,该属性是一个指针,指向拥有这个arguments对象的函数。  

  • 我正在处理一个Spring启动项目,其中传递了许多VM参数供应用程序启动,即证书位置、特定配置文件类型(不是dev、qa、prod等)。0/>file. 问题语句 default.yml中设置的属性仅可访问Spring上下文的环境接口,即org.springframework.core.env.环境,并且属性不会自动/默认设置为系统属性。 I 但是我不想使用环境. getProperty(key)