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

Springboot将应用程序yaml文件放在资源/配置/文件夹中,当运行JAR时,它无法找到资源

双恩
2023-03-14

我的项目结构

AssemblyProject
 |-src/main/java
 |-src/main/resources
   |-config
     |-application-prod.yml
     |-application.yml
     |-application-stage.yml
 |-build.gradle

我能够生成JAR文件。并尝试从JAR文件位置执行以下命令

java -jar assembly-services-1.0.0.jar --spring.config.location=classpath:config/ --spring.profiles.active=stage

我得到下面的错误

14:43:15.924 [main] ERROR org.springframework.boot.SpringApplication - Application run failed
org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property 'spring.profiles.active' imported from location 'class path resource [config/application-stage.yaml]' is invalid in a profile specific resource [origin: class path resource [config/application-stage.yaml] from assembly-services-1.0.0.jar - 38:13]
        at org.springframework.boot.context.config.InvalidConfigDataPropertyException.lambda$throwOrWarn$1(InvalidConfigDataPropertyException.java:124)
        at java.base/java.lang.Iterable.forEach(Iterable.java:75)
        at java.base/java.util.Collections$UnmodifiableCollection.forEach(Collections.java:1085)
        at org.springframework.boot.context.config.InvalidConfigDataPropertyException.throwOrWarn(InvalidConfigDataPropertyException.java:121)
        at org.springframework.boot.context.config.ConfigDataEnvironment.checkForInvalidProperties(ConfigDataEnvironment.java:354)
        at org.springframework.boot.context.config.ConfigDataEnvironment.applyToEnvironment(ConfigDataEnvironment.java:323)
        at org.springframework.boot.context.config.ConfigDataEnvironment.processAndApply(ConfigDataEnvironment.java:236)
        at org.springframework.boot.context.config.ConfigDataEnvironmentPostProcessor.postProcessEnvironment(ConfigDataEnvironmentPostProcessor.java:97)
        at org.springframework.boot.context.config.ConfigDataEnvironmentPostProcessor.postProcessEnvironment(ConfigDataEnvironmentPostProcessor.java:89)
        at org.springframework.boot.env.EnvironmentPostProcessorApplicationListener.onApplicationEnvironmentPreparedEvent(EnvironmentPostProcessorApplicationListener.java:100)
        at org.springframework.boot.env.EnvironmentPostProcessorApplicationListener.onApplicationEvent(EnvironmentPostProcessorApplicationListener.java:86)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:131)
        at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:82)
        at org.springframework.boot.SpringApplicationRunListeners.lambda$environmentPrepared$2(SpringApplicationRunListeners.java:63)
        at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
        at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:117)
        at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:111)
        at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:62)
        at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:362)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:320)
        at com.assembly.Application.main(Application.java:73)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:107)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:88)

注意:我知道这是重复的问题,但我已经通过了与此相关的所有过去的stackoverflow问题,但遗憾的是没有运气!

共有1个答案

冉永宁
2023-03-14

我看到的问题是,您必须在应用程序阶段提供活动配置文件。属性。你需要移除它。根据spring boot文档:

因此,在Spring Boot 2.4中,我们计划对属性和YAML文件的加载方式进行两项重大更改:

文档将按定义的顺序加载。

无法再从配置文件特定文档激活配置文件。

如果您仍然想使用遗留配置,则需要提供spring。配置。对应用程序使用legacy processing=true。属性

 类似资料:
  • 我有一个可运行的jar文件,无法访问位于默认src目录之外的资源。根据我的理解,这两门课的区别是什么。getResource()和ClassLoader。getResource(),我应该能够访问root/res/img/img1。png(请参阅下面的文件夹设置),方法是使用以下getResourceFile函数: 文件夹设置: 当我尝试执行jar可执行文件本身时,问题就出现了。然而,奇怪的是,我

  • 我花了好几个小时寻找答案,但我还是想不出答案,我正试图将包含我正在处理的游戏的所有图像和数据文件的资源文件夹从运行的jar中复制到e:/program files/mtd中/当我从eclipse中运行它时,它工作得很好,但当我导出jar并尝试它时,我得到了NoSuchFileException

  • 我正在从主类访问资源文件夹中的文件 我收到了这个错误: 我甚至打开了jar文件,remoteUnitsIdsInOldServer.txt文件就在那里,在类内部

  • 资源(Asset)代表 source 文件夹中除了文章以外的所有文件,例如图片、CSS、JS 文件等。比方说,如果你的Hexo项目中只有少量图片,那最简单的方法就是将它们放在 source/images 文件夹中。然后通过类似于 ![](/images/image.jpg) 的方法访问它们。 对于那些想要更有规律地提供图片和其他资源以及想要将他们的资源分布在各个文章上的人来说,Hexo也提供了更组

  • 方法:获取 现状:404 注意:URL应该是http://localhost:8080/dragonline/resources/img/icon.png()

  • 问题内容: 我在 项目根文件夹中* 有 hibernate.cfg.xml 文件。 * 如果我运行的应用程序包含: 它在方法中崩溃并显示以下消息: 无法找到cfg.xml资源[hibernate.cfg.xml] 输出 : 问题答案: 该 hibernate.cfg.xml的 文件应该被移动到 SRC 文件夹中。