我正在尝试将旧项目转换为maven项目.但是当项目是maven时,它会在导入的类上显示警告:
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
Run Code Online (Sandbox Code Playgroud)
访问限制:类型'BASE64Decoder'不是API(对所需库'C:\ Program Files\Java\jre7\lib\rt.jar'的限制)
那有什么问题呢?
所有sun。*和com.sun。*软件包都是Java实现专用的。将来的任何Java版本都可能会更改它们,可能会破坏依赖于它们的应用程序代码。
相反,java。*,javax。*和javafx。*包中的所有类都是固定的。他们的姓名和公共成员不会更改,也不会被删除(从理论上讲,已弃用的人除外)。
这就是为什么您会收到一条消息,指出这些类不是公共API的一部分。它们不适合公众消费。
从Java 8开始,您应该改用java.util.Base64。但是,您似乎正在使用Java 7,因此需要改用DatatypeConverter.parseBase64Binary和DatatypeConverter.printBase64Binary。
还应该提及的是,Java 9(预计于2017年7月发布)将不允许程序访问sun。*类。参见https://mreinhold.org/blog/jigsaw-module-system。
小智 5
您可以使用其他BASE64类(例如Apache Commons)替换sun.misc.BASE64Encoder和sun.misc.BASE64Decoder或使用:
java.util.Base64;
Base64.getDecoder().decode(...);
Base64.getEncoder().encodeToString(...);
Run Code Online (Sandbox Code Playgroud)