ScannerException: while scanning for the next token found character ‘@‘ 问题解决

末蓝、 2022-08-30 11:46 151阅读 0赞

在把一个老项目修改为动态读取配置参数的时候,发现报了这个错误:

  1. org.yaml.snakeyaml.scanner.ScannerException: while scanning for the next token
  2. found character ‘@’ that cannot start any token

分析:

产生此问题的原因:

1、一般情况下是因为,配置文件中写错了。请再三检查下项目的maven的pom文件中的 profiles - profile - properties下的属性名。看它是否能够和bootstrap.yml下的spring.profile.active名字是否一致。

很多人出错是因为从网上复制了一个配置,直接丢到了里面。自己不去看下配置项的名是否一致。导致的该错误的产生。

2、IDEA缓存的问题。

处理方法:

pom文件

  1. <profiles>
  2. <profile>
  3. <id>dev</dev>
  4. <properties>
  5. <!--此处的profileActive的名字是自定义的。这个名字要和bootstrap.yml文件中的spring.profile.active @@包含的值名称一致-->
  6. <profileActive>local</profileActive>
  7. </properties>
  8. <profile>
  9. ...
  10. </profiles>

bootstrap.yml文件对应

  1. spring:
  2. profile:
  3. active @profileActive@ #这个地方的名字要和 pom下的profile下的properties对的上

如果这一步没有问题的话,启动还是报了 ‘@’的异常的话,一般的情况下,应该是缓存的问题了。

缓存的问题一般你把IDEA右侧的maven,进行一下刷新操作,基本上就可以解决这个问题了。

总结

说个亲身经历,我以前刚上班的时候,公司的技术经理为了图省事,直接从网上copy了一个centos下的MySQL配置文件。然后作为正式环境使用。然后各种数据库的问题,后来一个高级工程师分析了下配置文件,发现配置参数就是普通的PC机的配置,根本就没有发挥服务器的优势。后来调整了缓冲大小。就再也没有问题了。

一般情况下,网络上的东西,其实有很多给出的结果或者答案,只是使用一定的场景,需要你甄别其中的情况,特别是一些配置文件之类的,一般的情况下,如果不是很熟悉,最好把每个配置项都认真读一遍。以防不测。这个不测看具体事故大小而定。

发表评论

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

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

相关阅读