最近在忙单位升级碰到一些问题记录下: 把原来老项目jdk1.7升级到jdk1.8/Tomcat9,但是升级到jdk1.8以后,编译出现java.lang.NoClassDefFoundError: sun/io/CharToByteConverter错误,经查询,jdk1.8版本中已经从sun.io中去除CharToByteConverter等代码。
解决办法:
- 从jdk1.7源码中(sun.io中)找来了相关java文件,放到项目中 sun.io(跟源码目录结构一样)文件目录下即可。
- 编码:UTF-8
需要的文件:
- ByteToCharConverter.java
- ByteToCharUTF8.java
- CharacterEncoding.java
- CharToByteConverter.java (可不用)
- CharToByteUTF8.java(可不用)
- ConversionBufferFullException.java
- Converters.java
- UnknownCharacterException.java
PS:如果有其它编码格式把对应编码源码加入即可。
如果不方便找源码可以从jdk1.7的rt.jar反编译代码: