Создание предупреждений относительно использования проприетарного API Sun

Я пытаюсь очистить свою среду сборки и обнаружил пару предупреждений об использовании проприетарных API Sun.

[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? Или их можно заменить официальными API Java? Я понимаю, что это всего лишь предупреждения, но это то, что я планирую решить.

4 ответа

Решение

Непонятно, почему вы декларируете свое HttpURLConnection а также Handler классы в первую очередь - вы уверены, что хотите их скомпилировать?

Что касается Base64 - мне нравится эта реализация общественного достояния.

Если вы написали http-клиент, то вы заново изобрели колесо. Это действительно хороший пример уже в http-клиенте Apache.

Если вам нужна кодировка / декодирование Base64, для этого есть кодек в Apache Commons Codec.

Кодек Apache Commons включает класс Base64.

Для Base64, начиная с Java 8 вы можете использовать java.util.Base64.getEncoder().encode(Byte[]) а также java.util.Base64.getDecoder().decode(Byte[])

Я не уверен, почему вы должны использовать эти sun.net.www.protocol.http объекты непосредственно в вашем коде, так как они используются внутри HttpUrlConnection, Вы можете использовать этот объект вместо внутренних. Если этот API не отвечает вашим потребностям, есть Apache HttpClient.

Что касается кодировки base 64, вы можете использовать кодировку, поставляемую с Java Mail, вот так:

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

или Apache Commons-Codec.

Другие вопросы по тегам