原博客地址:/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