构建有关使用Sun专有API的警告

时间:2012-11-20 14:48:34

标签: java build jdk-internal-api

我正在尝试清理我的构建环境,并发现了一些关于使用Sun专有API的警告。

[javac] /workspace/<path-to-files>/Handler.java:18: warning: sun.net.www.protocol.http.Handler is Sun proprietary API and may be removed in a future release
[javac] public class Handler extends sun.net.www.protocol.http.Handler {
[javac]                                                       ^
[javac] /workspace/<path-to-files>/HttpClient.java:16: warning: sun.net.www.http.HttpClient is Sun proprietary API and may be removed in a future release 
[javac] public class HttpClient extends sun.net.www.http.HttpClient {
[javac]
[javac] /workspace/<path-to-files>/HttpURLConnection.java:19: warning: sun.net.www.protocol.http.HttpURLConnection is Sun proprietary API and may be removed in a future release
[javac] public class HttpURLConnection extends sun.net.www.protocol.http.HttpURLConnection {
[javac]                                                                 ^

和...

[javac] /workspace/<path-to-files>/JavaFile.java:17: warning: sun.misc.BASE64Decoder is Sun proprietary API and may be removed in a future release
[javac] import sun.misc.BASE64Decoder;
[javac]                ^
[javac] /workspace/<path-to-files>/JavaFile.java:338: warning: sun.misc.BASE64Encoder is Sun proprietary API and may be removed in a future release
[javac]          BASE64Encoder encoder = new BASE64Encoder();
[javac]          ^

有人能建议这些API的替代品吗?或者可以用官方Java API替换它们?我意识到这些只是警告,但这是我打算解决的问题。

5 个答案:

答案 0 :(得分:7)

目前尚不清楚为什么你首先声明自己的HttpURLConnectionHandler课程?你是否确定要编译它们?

至于Base64 - 我自己也喜欢this public domain implementation

答案 1 :(得分:6)

如果你已经写了一个http客户端,那么你已经重新发明了轮子。 apache http client已经有一个非常好的了。

如果您想要Base64编码/解码,那么apache commons codec中就有一个类。

答案 2 :(得分:3)

答案 3 :(得分:0)

我不确定为什么您需要在代码中直接使用这些sun.net.www.protocol.http对象,因为HttpUrlConnection在内部使用这些对象。您可以使用该对象而不是内部对象。如果该API无法满足您的需求,则会Apache HttpClient

对于base 64编码,您可以使用Java Mail提供的编码,如下所示:

final InputStream decoded = MimeUtility.decode(encodedInput, "base64");

Apache commons-codec

答案 4 :(得分:0)

对于Base64,从Java 8开始,您可以使用java.util.Base64.getEncoder().encode(Byte[])java.util.Base64.getDecoder().decode(Byte[])