程序启动报错Failed to load property source from location ‘classpath:/application.yml‘

「爱情、让人受尽委屈。」 2023-10-09 20:11 142阅读 0赞

目录

    • 一、报错信息
    • 二、场景
    • 三、排查
      • 调试过程
    • 四、原因
    • 五、解决

解锁成就:第一次通过查看框架源代码解决实际问题

一、报错信息

  1. java.lang.IllegalStateException: Failed to load property source from location 'classpath:/application.yml'
  2. at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:554)
  3. at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.loadForFileExtension(ConfigFileApplicationListener.java:500)
  4. at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:467)
  5. at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.lambda$null$6(ConfigFileApplicationListener.java:448)
  6. at java.lang.Iterable.forEach(Iterable.java:75)
  7. at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.lambda$load$7(ConfigFileApplicationListener.java:447)
  8. at java.lang.Iterable.forEach(Iterable.java:75)
  9. at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:444)
  10. at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:332)
  11. at org.springframework.boot.context.config.ConfigFileApplicationListener.addPropertySources(ConfigFileApplicationListener.java:207)
  12. at org.springframework.boot.context.config.ConfigFileApplicationListener.postProcessEnvironment(ConfigFileApplicationListener.java:190)
  13. at org.springframework.boot.context.config.ConfigFileApplicationListener.onApplicationEnvironmentPreparedEvent(ConfigFileApplicationListener.java:177)
  14. at org.springframework.boot.context.config.ConfigFileApplicationListener.onApplicationEvent(ConfigFileApplicationListener.java:163)
  15. at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
  16. at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
  17. at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
  18. at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:127)
  19. at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:75)
  20. at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:54)
  21. at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:347)
  22. at org.springframework.boot.SpringApplication.run(SpringApplication.java:306)
  23. at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:157)
  24. at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:137)
  25. at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:91)
  26. at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:171)
  27. at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5311)
  28. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
  29. at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:753)
  30. at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:729)
  31. at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
  32. at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1126)
  33. at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1868)
  34. at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
  35. at java.util.concurrent.FutureTask.run(FutureTask.java:266)
  36. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
  37. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
  38. at java.lang.Thread.run(Thread.java:748)
  39. Caused by: org.yaml.snakeyaml.parser.ParserException: while parsing a block mapping
  40. in 'reader', line 1, column 1:
  41. spring:
  42. ^
  43. expected <block end>, but found '<scalar>'
  44. in 'reader', line 34, column 3:
  45. getuserinfo-uri:http://127.0.0.1 ...
  46. ^
  47. at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingKey.produce(ParserImpl.java:572)
  48. at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158)
  49. at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:148)
  50. at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:214)
  51. at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:144)
  52. at org.yaml.snakeyaml.composer.Composer.getNode(Composer.java:85)
  53. at org.yaml.snakeyaml.constructor.BaseConstructor.getData(BaseConstructor.java:123)
  54. at org.yaml.snakeyaml.Yaml$1.next(Yaml.java:547)
  55. at org.springframework.beans.factory.config.YamlProcessor.process(YamlProcessor.java:161)
  56. at org.springframework.beans.factory.config.YamlProcessor.process(YamlProcessor.java:134)
  57. at org.springframework.boot.env.OriginTrackedYamlLoader.load(OriginTrackedYamlLoader.java:75)
  58. at org.springframework.boot.env.YamlPropertySourceLoader.load(YamlPropertySourceLoader.java:50)
  59. at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.loadDocuments(ConfigFileApplicationListener.java:572)
  60. at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:526)
  61. ... 36 common frames omitted
  62. 07-Apr-2023 09:29:31.211 严重 [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start:
  63. org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/online_admin]]
  64. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162)
  65. at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:753)
  66. at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:729)
  67. at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
  68. at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1126)
  69. at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1868)
  70. at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
  71. at java.util.concurrent.FutureTask.run(FutureTask.java:266)
  72. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
  73. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
  74. at java.lang.Thread.run(Thread.java:748)

二、场景

1、项目使用的是application.properties,而不是application.yml

2、项目在本机启动是正常的

3、在Linux上启动则报错


三、排查

1、起初以为是tomcat的webapps目录下的程序不是war包,重新打包放上去,依旧报错

2、检查是否因为application配置文件的中文注释存在编码问题导致报错
2.1、调整IDEA的文件编码为UTF-8重新编译,依旧报错
2.2、删除application.properties所有中文,依旧报错

3、检查application配置文件中定义属性的格式是否正确,经过排查,属性格式并没有问题

4、通过远程调试查看源码,发现出错的并不是本地的application.properties,而是引入的自定义Jar包中的配置文件application.yml的属性定义格式有问题

调试过程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以下配置格式有误,缺少空格
在这里插入图片描述

配置属性缺少一个”空格”,并且该属性名称正好与”报错信息-45行”对应上


四、原因

引入的自定义Jar包中的配置文件application.yml的属性定义格式有问题


五、解决

调整Jar包application.yml的属性定义格式,重新发布Jar包,并更新Jar包

发表评论

表情:
评论列表 (有 0 条评论,142人围观)

还没有评论,来说两句吧...

相关阅读