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

while