Intellij-解决报错:import .BASE64Decoder无法找到

时间:2025-01-21 07:21:31

原博客地址:/wsygdb/p/

报错原因:JDK从1.8升级到9.0.1后.BASE64Decoder和.BASE64Encoder不可用

描述

最近研究把项目的JDK升级从1.8升级到9.0.1,在eclipse上配置好JDK为9后,发现项目有错,查看发现.BASE64Decoder和.BASE64Encoder不可用。

原因分析

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

处理办法

从官网发现,从JDK 1.8开始,就提供了.和.的JDK公共API,可代替.BASE64Decoder和.BASE64Encoder的JDK内部API。我把代码做了如下替换:
.的官网API:/javase/9/docs/api/java/util/
.的官网API:/javase/9/docs/api/java/util/

    /**
     * BASE64Encoder 加密
     * 
     * @param data
     *            要加密的数据
     * @return 加密后的字符串
     */
    public static String encryptBASE64(byte[] data) {
        // BASE64Encoder encoder = new BASE64Encoder();
        // String encode = (data);
        // 从JKD 9开始包已废除,从JDK 1.8开始使用.
        Encoder encoder = ();
        String encode = (data);
        return encode;
    }
    /**
     * BASE64Decoder 解密
     * 
     * @param data
     *            要解密的字符串
     * @return 解密后的byte[]
     * @throws Exception
     */
    public static byte[] decryptBASE64(String data) throws Exception {
        // BASE64Decoder decoder = new BASE64Decoder();
        // byte[] buffer = (data);
        // 从JKD 9开始包已废除,从JDK 1.8开始使用.
        Decoder decoder = ();
        byte[] buffer = (data);
        return buffer;
    }

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31