jkd从1.8升级后报sun.misc相关错误

    技术2022-07-11  95

    Idea解决找不到sun.misc.BASE64Encoder及sun.misc.BASE64Decoder找不到包

    报错原因:

    JDK从1.8升级到9.0.1后sun.misc.BASE64Decoder和sun.misc.BASE64Encoder不可用

    原因分析:

    ​ 参看官网,发现JDK中的lib\tools.jar和JRE中的lib\rt.jar已从Java SE 9中删除。这些JAR中可用的类和资源现在以文件中的内部格式存储在lib目录的命名模块中。 可以使用称为jrt的新方案来从运行时映像检索这些类和资源。 依靠这些JAR位置的应用程序将不再工作

    sun.misc.BASE64Encoder 不建议使用java.sun自带包中的内容

    import sun.misc.BASE64Encoder;import sun.misc.BASE64Decoder;

    在项目中,设计到64位编码的。有时开发会用到JDK中自带的BASE64工具。但sun公司是建议不这样做的。尤其是更新了JDK版本,项目甚至还存在保存的信息。 可引用 import org.apache.commons.codec.binary.Base64;进行替换

    解决办法1

    将原来使用的JDK自带jar包中的

    return new BASE64Encoder().encode(encrypted); 替换为 import org.apache.commons.codec.binary.Base64; return Base64.encodeBase64String(encrypted); //编码

    将 byte[] encrypted1 = new BASE64Decoder().decodeBuffer(text);

    替换为 import org.apache.commons.codec.binary.Base64; byte[] encrypted1 =Base64.decodeBase64(text); //解码

    解决办2

    回退jdk:将升级的jdk回退到1.8系列

    Processed: 0.012, SQL: 9