【已解决】Nacos配置文件有中文命令行执行报错

一、问题出现背景:

  • 用IDEA编辑器启动项目没有问题
  • 用命令行执行mvn clean test会报错,原因就是编码格式的问题,但是加了-Dfile.encoding=utf-8仍然有问题。
YAMLException: java.nio.charset.MalformedInputException: Input length = 1

二、可能原因及尝试过程:

  1. 去掉中文就没有问题:改为Unicode配置然后再在代码中解码
  2. 增加中文注释一样会有问题,而去掉就没问题
  3. 参考Nacos配置中心yml文件中文配置启动报错问题解决可能需要加JVM参数,但mvn clean test怎么添加呢?直接加又没有用(mvn clean test -Dfile.encoding=UTF-8)。参考SpringBoot启动报错java.nio.charset.MalformedInputException: Input length = 1解决方案或许可以添加<maven.compiler.encoding>UTF-8</maven.compiler.encoding>来解决,但实际上还是有问题org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length = 1,因为是Nacos读取远程配置文件中含有中文引起的问题。
  4. 参考SpringBoot Test + Nacos配置文件中文导致的java.nio.char set.MalformedInputException: Input length = 1最终修改pom文件<argLine>-Dfile.encoding=UTF-8</argLine>解决了

三、最终解决:

  • 临时用Unicode配置,然后代码中增加解码操作。不过非测试环境直接用中文配置即可,只需要在测试环境用Unicode配置就行。如此做虽然解决了问题但增加了代码量。
  • 在pom.xml文件中增加配置<argLine>-Dfile.encoding=UTF-8</argLine>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <testFailureIgnore>true</testFailureIgnore>
        <argLine>-Dfile.encoding=UTF-8</argLine><!-- 增加配置 -->
    </configuration>
</plugin>

备注:

本文主要是借助博客环境,同大家讨论异常问题解决的办法,欢迎大家评论,谢谢!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值