ScannerException: while scanning for the next token found character ‘@‘ 问题解决
Posted 沛沛老爹
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ScannerException: while scanning for the next token found character ‘@‘ 问题解决相关的知识,希望对你有一定的参考价值。
在把一个老项目修改为动态读取配置参数的时候,发现报了这个错误:
org.yaml.snakeyaml.scanner.ScannerException: while scanning for the next token
found character ‘@’ that cannot start any token
分析:
产生此问题的原因:
1、一般情况下是因为,配置文件中写错了。请再三检查下项目的maven的pom文件中的 profiles - profile - properties下的属性名。看它是否能够和bootstrap.yml下的spring.profile.active名字是否一致。
很多人出错是因为从网上复制了一个配置,直接丢到了里面。自己不去看下配置项的名是否一致。导致的该错误的产生。
2、IDEA缓存的问题。
处理方法:
pom文件
<profiles>
<profile>
<id>dev</dev>
<properties>
<!--此处的profileActive的名字是自定义的。这个名字要和bootstrap.yml文件中的spring.profile.active @@包含的值名称一致-->
<profileActive>local</profileActive>
</properties>
<profile>
...
</profiles>
bootstrap.yml文件对应
spring:
profile:
active: @profileActive@ #这个地方的名字要和 pom下的profile下的properties对的上
如果这一步没有问题的话,启动还是报了 '@'的异常的话,一般的情况下,应该是缓存的问题了。
缓存的问题一般你把IDEA右侧的maven,进行一下刷新操作,基本上就可以解决这个问题了。
总结
说个亲身经历,我以前刚上班的时候,公司的技术经理为了图省事,直接从网上copy了一个centos下的mysql配置文件。然后作为正式环境使用。然后各种数据库的问题,后来一个高级工程师分析了下配置文件,发现配置参数就是普通的PC机的配置,根本就没有发挥服务器的优势。后来调整了缓冲大小。就再也没有问题了。
一般情况下,网络上的东西,其实有很多给出的结果或者答案,只是使用一定的场景,需要你甄别其中的情况,特别是一些配置文件之类的,一般的情况下,如果不是很熟悉,最好把每个配置项都认真读一遍。以防不测。这个不测看具体事故大小而定。
以上是关于ScannerException: while scanning for the next token found character ‘@‘ 问题解决的主要内容,如果未能解决你的问题,请参考以下文章
ScannerException: while scanning for the next token found character ‘@‘ 问题解决
SpringBoot配置文件yml ScannerException: while scanning an alias *
org.yaml.snakeyaml.scanner.ScannerException: while scanning for the next token
Caused by: org.yaml.snakeyaml.scanner.ScannerException
while scanning for the next token found character ‘@‘ that cannot start any token