警告:BASE64Decoder是内部专用API,可能会在未来发行版中删除

开发过程中遇到这个问题,虽然不影响项目运行,打包发布,但还是要把警告扼杀在摇篮中。
sun.misc包都是sun公司的内部类,并没有在java api中公开过,不建议使用,所以使用这些方法是不安全的,将来随时可能会从中去除,所以相应的应该使用替代的对象及方法。

针对警告: BASE64Decoder是内部专用 API, 可能会在未来发行版中删除解决办法

采用org.apache.commons.codec.binary.Base64替换

1
import org.apache.commons.codec.binary.Base64;
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
import org.apache.commons.codec.binary.Base64;

/**
* @author wind
* @version V1.0
* @className Base64Encoder
* @createDate 2021年12月28日
*/
public class Base64Encoder {

/**
* @param bytes
* @return
*/
public static byte[] decode(final byte[] bytes) {
return Base64.decodeBase64(bytes);
}

/**
* 二进制数据编码为BASE64字符串
*
* @param bytes
* @return
* @throws Exception
*/
public static String encode(final byte[] bytes) {
return new String(Base64.encodeBase64(bytes));
}

}

原方法

1
2
3
4
5
6
7
8
9
BASE64Encoder encoder = new BASE64Encoder();

//String imagestr new String(base64en.encode(str.getBytes("GBK"))).replace("\n","").replace("\r","");

String imagestr = encoder.encode(captcha);

BASE64Decoder decoder = new BASE64Decoder();

byte[] bytes = decoder.decodeBuffer(imagestr);

现方法

1
2
3
4
5
6
7
8
import java.util.Base64.Encoder
import java.util.Base64.Decoder

Encoder encoder = Base64.getEncoder();
String result = encoder.encodeToString(byteArray);

Decoder decoder = Base64.getDecoder();
byte[] result = decoder.decode(str);

————————————————
原文链接:https://blog.csdn.net/weixin_42096792/article/details/122184709