SpringBoot启动yaml报错的解决

 更新时间:2021年08月18日 14:23:27   作者:草宝虫  
这篇文章主要介绍了SpringBoot启动yaml报错的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

SpringBoot启动yaml报错

报错找不到org.yaml里的一个方法

10:45:54.742 [main] ERROR org.springframework.boot.SpringApplication - Application run failed
java.lang.NoSuchMethodError: org.yaml.snakeyaml.nodes.ScalarNode.getScalarStyle()Lorg/yaml/snakeyaml/DumperOptions$ScalarStyle;
	at org.springframework.boot.env.OriginTrackedYamlLoader$KeyScalarNode.<init>(OriginTrackedYamlLoader.java:127)
	at org.springframework.boot.env.OriginTrackedYamlLoader$KeyScalarNode.get(OriginTrackedYamlLoader.java:138)
	at org.springframework.boot.env.OriginTrackedYamlLoader$KeyScalarNode.get(OriginTrackedYamlLoader.java:133)
	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
	at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1384)
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:566)
	at org.springframework.boot.env.OriginTrackedYamlLoader$OriginTrackingConstructor.replaceMappingNodeKeys(OriginTrackedYamlLoader.java:99)
	at org.springframework.boot.env.OriginTrackedYamlLoader$OriginTrackingConstructor.constructObject(OriginTrackedYamlLoader.java:92)
	at org.yaml.snakeyaml.constructor.BaseConstructor.constructDocument(BaseConstructor.java:161)
	at org.yaml.snakeyaml.constructor.BaseConstructor.getData(BaseConstructor.java:127)
	at org.yaml.snakeyaml.Yaml$1.next(Yaml.java:547)
	at org.springframework.beans.factory.config.YamlProcessor.process(YamlProcessor.java:160)
	at org.springframework.beans.factory.config.YamlProcessor.process(YamlProcessor.java:134)
	at org.springframework.boot.env.OriginTrackedYamlLoader.load(OriginTrackedYamlLoader.java:75)
	at org.springframework.boot.env.YamlPropertySourceLoader.load(YamlPropertySourceLoader.java:50)
	at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.loadDocuments(ConfigFileApplicationListener.java:574)
	at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:528)
	at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.loadForFileExtension(ConfigFileApplicationListener.java:502)
	at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:469)
	at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.lambda$null$6(ConfigFileApplicationListener.java:450)
	at java.lang.Iterable.forEach(Iterable.java:75)
	at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.lambda$load$7(ConfigFileApplicationListener.java:449)
	at java.lang.Iterable.forEach(Iterable.java:75)
	at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:446)
	at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:334)
	at org.springframework.boot.context.config.ConfigFileApplicationListener.addPropertySources(ConfigFileApplicationListener.java:209)
	at org.springframework.boot.context.config.ConfigFileApplicationListener.postProcessEnvironment(ConfigFileApplicationListener.java:192)
	at org.springframework.boot.context.config.ConfigFileApplicationListener.onApplicationEnvironmentPreparedEvent(ConfigFileApplicationListener.java:179)
	at org.springframework.boot.context.config.ConfigFileApplicationListener.onApplicationEvent(ConfigFileApplicationListener.java:165)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:127)
	at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:75)
	at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:54)
	at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:347)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:306)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1260)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1248)

解决

核对了下引入的包,发现项目中额外引入了1.19版本的org.yaml.snakeyaml包,这个包里确实没有这个方法。把这个包改成1.26的即可。

SpringBoot配置文件application.yml遇到的坑

1.第一个坑

原代码:

username:root
password:123456

项目启动报以下异常:

Caused by: org.yaml.snakeyaml.scanner.ScannerException: while scanning a simple key

产生问题的根源:application.yml文件键、值对之间要用冒号:隔开,而且冒号和值之间有一个空格

上述异常产生的就是键后面的:号紧接着写值,没有留一个空格。

解决办法:

冒号:后面留出一个空格后再写值

2.第二个坑

原代码参见下图:

项目启动以后报以下异常:

Caused by: org.yaml.snakeyaml.scanner.ScannerException: mapping values are not allowed here

Caused by: org.yaml.snakeyaml.parser.ParserException: while parsing a block mapping

expected <block end>, but found '<block mapping start>'
in 'reader', line 11, column 3:
jpa:

产生问题的根源:application.yml一级键,空一格写就可以了。像Jpa这样是一级键,下属的database是二级键。

解决办法:

Jpa向左前进一格到中间箭头的方位即可。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot+Hutool实现图片验证码的示例代码

    SpringBoot+Hutool实现图片验证码的示例代码

    图片验证码在注册、登录、交易、交互等各类场景中都发挥着巨大作用,本文主要介绍了SpringBoot+Hutool实现图片验证码的示例代码,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • JAVA maven项目使用钉钉SDK获取token、用户

    JAVA maven项目使用钉钉SDK获取token、用户

    这篇文章主要介绍了JAVA maven项目使用钉钉SDK获取token、用户,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • JavaWeb三大组件之监听器Listener详解

    JavaWeb三大组件之监听器Listener详解

    这篇文章主要介绍了JavaWeb三大组件之监听器Listener详解,在JavaWeb应用程序中,Listener监听器是一种机制,用于监听和响应特定的事件,它可以感知并响应与应用程序相关的事件,从而执行相应的逻辑处理,需要的朋友可以参考下
    2023-10-10
  • Java项目中防止SQL注入的四种方案总结

    Java项目中防止SQL注入的四种方案总结

    SQL注入是一种代码注入技术,通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,下面我们就来看看如何在项目中防止SQL注入吧
    2023-10-10
  • Java动态脚本Groovy获取Bean技巧

    Java动态脚本Groovy获取Bean技巧

    这篇文章主要给大家分享的是Java动态脚本Groovy获取Bean技巧,在Java代码中当我们需要一个Bean对象,通常会使用spring中@Autowired注解,用来自动装配对象。下面我们一起进入文章学习个表格多 详细内容吧

    2021-12-12
  • IDEA安装阿里代码规范插件的步骤图文详解

    IDEA安装阿里代码规范插件的步骤图文详解

    这篇文章主要介绍了IDEA安装阿里代码规范插件的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • java使用监听器实现一个统计网站在线人数的示例

    java使用监听器实现一个统计网站在线人数的示例

    本文主要介绍了java使用监听器实现一个统计网站在线人数的示例,具有一定的参考价值,有需要的朋友可以了解一下。
    2016-10-10
  • 深入分析RabbitMQ中死信队列与死信交换机

    深入分析RabbitMQ中死信队列与死信交换机

    这篇文章主要介绍了RabbitMQ中死信队列与死信交换机,死信队列就是一个普通的交换机,有些队列的消息成为死信后,一般情况下会被RabbitMQ清理,感兴趣想要详细了解可以参考下文
    2023-05-05
  • Intellij idea下使用不同tomcat编译maven项目的服务器路径方法详解

    Intellij idea下使用不同tomcat编译maven项目的服务器路径方法详解

    今天小编就为大家分享一篇关于Intellij idea下使用不同tomcat编译maven项目的服务器路径方法详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • Java中byte、byte数组与int、long的转换详解

    Java中byte、byte数组与int、long的转换详解

    这篇文章分别给大家介绍了Java中byte和int之间的转换、Java中 byte数组和int之间的转换、Java中byte数组和long之间的转换以及整理了整体工具类的源码,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-02-02

最新评论