[nacos]JAR启动并加载/解析Nacos yml格式的配置文件时,报“java.nio.charset.MalformedInputException: Input length = 1 ”

Posted 千千寰宇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[nacos]JAR启动并加载/解析Nacos yml格式的配置文件时,报“java.nio.charset.MalformedInputException: Input length = 1 ”相关的知识,希望对你有一定的参考价值。

1 问题描述

  • 原因1:字符集不匹配

nacos中配置文件的字符集为A,应用程序的读取配置文件时使用了字符集B,导致使用字符集B解码文件二进制流时字符解码失败。
一般问题出在中文注释上

  • 原因2:(yml文件)配置格式有误

2 解决思路

2.1 原因1:字符集不匹配时

方法[1] 删除nacos配置文件中的一切中文字符

短频快(临时性解决)

方法[2] 正规解决思路

  • 打JAR包时,在pom.xml指定JAR包内的字符集

pom.xml

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.build.outputEncoding>UTF-8</project.build.outputEncoding>
  • jar包启动时,全局指定文件编码类型

以解决:设置springboot/tomca加载nacos 配置中心的配置文件时报java.nio.charset.MalformedInputException: Input length = 1的问题

java -Dfile.encoding=utf-8 -jar app.jar
java -javaagent:./skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=application-local-test -Dskywalking.collector.backend_service=127.0.0.1:11800 -Dskywalking.trace.ignore_path=GET:/actuator/health,Lettuce/**,/eureka/**,HttpAsyncClient/local,Mysql/**,Druid/** -Dfile.encoding=utf-8 -jar app.jar 

方法3 (通过IDEA默认方式在本地启动程序时)
Settings-Editor-File Encodings-*

3 延伸相关问题

Q1:Windows中启动JAR包程序的控制台窗口中文乱码显示

  • 问题描述

JAR启动命令中指定了字符集编码: -Dfile.encoding=utf-8

  • 解决思路

[方法1] 从控制台窗口入手:设置控制台窗口的字符集为UTF-8

chcp 65001

java -javaagent:./skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=application-local-test -Dskywalking.collector.backend_service=127.0.0.1:11800 -Dskywalking.trace.ignore_path=GET:/actuator/health,Lettuce/**,/eureka/**,HttpAsyncClient/local,Mysql/**,Druid/** -Dfile.encoding=utf-8 -jar app.jar



X 参考文献

springcloud 项目jar运行Nacos出错

参考技术A 1、首先,springcloud项目在idea中正常运行,但将项目打包成jar后无法启动。项目的注册中心与配置中心用的是Nacos。项目在启动时,会去Nacos注册中心拉取配置、并注册服务。在从Nacos中拉取解析配置时,发生错误。

2、通过多番查证,才知道这是因为配置文件中有中文注释,但是启动时没有指定文件的编码方式,导致识别中文错误。

3、最后启动时指定文件编码方式,成功启动项目

以上是关于[nacos]JAR启动并加载/解析Nacos yml格式的配置文件时,报“java.nio.charset.MalformedInputException: Input length = 1 ”的主要内容,如果未能解决你的问题,请参考以下文章

nacos原理

启动项目载入配置中心配置失败,未配置参数

4Nacos 配置中心源码解析之 服务端启动

4Nacos 配置中心源码解析之 服务端启动

4Nacos 配置中心源码解析之 服务端启动

nacos Windows设置开机启动服务