访问限制:“BASE64Decoder”类型不是API

我试图将旧项目转换为Maven项目。 但是当项目是Maven的时候,它会在导入的类中显示警告:

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

访问限制:'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。

还应该提到的是,预计将于2017年7月发布的Java 9将不允许程序访问sun。*课程。 请参阅https://mreinhold.org/blog/jigsaw-module-system。

链接地址: http://www.djcxy.com/p/73809.html

上一篇: Access restriction: The type 'BASE64Decoder' is not API

下一篇: Access restriction: The type 'Application' is not API (restriction on required library rt.jar)