java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > java.nio.charset.MalformedInputException

SpringBoot启动java.nio.charset.MalformedInputException: Input length = 1报错的解决方案

作者:经理,天台风好大

本文主要介绍了SpringBoot启动java.nio.charset.MalformedInputException: Input length = 1报错的解决方案

最近新搭的一个eureka项目,启动时,会报MalformedInputException这个异常,

百度了很久,网上说的千篇一律,

这些根本没有根治这个问题。

下面是这个简单的异常信息

java.lang.IllegalStateException: Failed to load property source from 'file:/D:/IDEA/spring-cloud/sp05-eureka/target/classes/application.yml' (classpath:/application.yml)
 
Caused by: org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length = 1

出现这个的原因,就是解析yml文件时,中文字符集不是utf-8的原因,

但是通过cmd命令,mvn clean compile 后,项目又可以成功运行

找了很久问题,使用eclipse和idea同时测试,最终发现,是maven在项目编译时,默认字符集编码是GBK

一、检查pom文件

我们首先需要在pom文件中设置,编译时编码utf-8即可,如果解决不了进行第二步

<properties>
   <java.version>1.8</java.version>
    <spring-cloud.version>Hoxton.SR6</spring-cloud.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
</properties>

二、修改编码格式

然后重新启动项目!!!!

三、最不应该出现的错误

就是你的application.yml文件是通过把其他类型的文件后缀名直接改为yml生成的,这时就需要你把application.yml中的内容全部复制,然后删除,再新建一个application.yml文件,将复制的内容拷贝进去再运行项目就不会报错了。

四、总结:

这个问题,在一般成熟的项目里面是不会出现的,他一般出现在新建的项目上面,因为一般新建的项目有些配置不够完善,这一块是需要注意的地方。

到此这篇关于SpringBoot启动java.nio.charset.MalformedInputException: Input length = 1报错的解决方案的文章就介绍到这了,更多相关java.nio.charset.MalformedInputException内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文