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

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

时间:2023-04-19 10:12:28浏览次数:48  
标签:MalformedInputException java 配置文件 字符集 jar JAR Dskywalking

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 参考文献

标签:MalformedInputException,java,配置文件,字符集,jar,JAR,Dskywalking
From: https://www.cnblogs.com/johnnyzen/p/17332241.html

相关文章

  • java基础数据类型
    这里整理java基础数据类型学习时几个需要注意的地方,防止自己使用错误,走错路...整数//整数intnum1=10;bytenum2=20;shortnum3=30;longnum4=30L;//long类型要在数字后面加个L//整数拓展进制:二进制0b十进制八进......
  • Java的对象克隆
    本节我们会讨论Cloneable接口,这个接口指示一个类提供了一个安全的clone()方法。Object类提供的clone()方法是“浅拷贝”,并没有克隆对象中引用的其他对象,原对象和克隆的对象仍然会共享一些信息。深拷贝指的是:在对象中存在其他对象的引用的情况下,会同时克隆对象中引用的其......
  • Java-Day-12( 类变量 + 类方法 + main 方法 + 代码块 + 单例设计模式 + final 关键字 )
    Java-Day-12类变量定义一个变量count,是一个类变量(静态变量)staticclassPerson{privateStringname;// 该静态变量static最大的特点就是会被Person所有的对象实例共享publicstaticintcount=0;publicPerson(Stringname){this.na......
  • 每日八股文之Java
    1、请你说说多线程得分点:线程和进程的关系、为什么使用多线程进程是操作系统资源调度的基本单位,线程是处理器任务调度和执行的基本单位,一个进程可以创建多个线程,每个线程有自己独立的程序计数器,本地方法栈和虚拟机栈,线程之间共享进程的堆和方法区。线程之间是通过时间片算法......
  • Java包
    包包是一组类和接口的集合。包的引入,实现了封装特性。同一个包中不允许有同名的类和接口,不同的包中允许同名的类和接口。包的引入,解决了类名的冲突问题。包本身也是分级的,包中还可以有子包。Java的包可以用文件系统来存放,也可以存放在数据库中。在Windows中,包是以文件系统来......
  • java学习日记20230414-HashSet源码
    HashSetHashSet底层是HashMap添加一个元素时,先得到Hash值,会转化成索引值;找到存储数据表table,看这个索引位置是否存放元素;如果没有直接加入如果有,调用equals比较,如果相同放弃添加,如果不同,则添加到最后在java8中,如果一条链表的元素个数到达TREEIFY_THRESHOLD(默认是8)(table表......
  • JavaScript程序与设计入门到入土
    4.JavaScript代码的书写位置和css一样,我们的js也可以有多种方式书写在页面上让其生效js也有多种方式书写,分为行内式,内嵌式,外链式4-1行内式JS代码(不推荐)写在标签上的js代码需要依靠事件(行为)来触发<!--写在a标签的href属性上--><ahref="javascript:alert('我是......
  • 【Java】构造方法
    如果想在创建对象时就能完成属性的初始化操作,给属性赋相应的值,可通过类的特殊成员——构造方法(也称为构造函数)完成。构造方法可用于当对象被创建时初始化对象中的属性。构造方法时一个特殊的方法,它的名字必须与所在的类的名字相同,且没有返回类型。语法:【访问符】<类名>(【参数列......
  • XAPMM上更改了root密码,怎么更新phpMyAdmin的配置文件
    要更新phpMyAdmin的配置文件以反映在XAPMM上更改的root密码,请按照以下步骤操作:1.打开phpMyAdmin的配置文件:在XAPMM中,phpMyAdmin的配置文件通常位于D:\xampp\phpMyAdmin2.在配置文件中,找到以下行:$cfg['Servers'][$i]['user']='root';$cfg['Servers'][$i]['password']......
  • java异常处理
    Java异常处理异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。比如说,你的代码少了一个分号,那么运行出来结果是提示是错误java.lang.Error;如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出java.lang.ArithmeticException的异......