[英]Build warnings regarding using Sun proprietary 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替換它們? 我意識到這些只是警告,但這是我打算解決的問題。
目前尚不清楚為什么你首先聲明自己的HttpURLConnection
和Handler
類 - 你確定要編譯它們嗎?
至於Base64 - 我自己喜歡這個公共領域的實現 。
如果你已經寫了一個http客戶端,那么你已經重新發明了輪子。 已經在apache http客戶端中有一個非常好的。
如果你想要Base64編碼/解碼,那么在apache commons編解碼器中有一個類。
我不確定為什么你需要在你的代碼中直接使用那些sun.net.www.protocol.http
對象,因為它們是由HttpUrlConnection
內部使用的。 您可以使用該對象而不是內部對象。 如果該API不能滿足您的需求,那么就有Apache HttpClient 。
對於base 64編碼,您可以使用Java Mail提供的編碼,如下所示:
final InputStream decoded = MimeUtility.decode(encodedInput, "base64");
對於Base64,從Java 8開始,您可以使用java.util.Base64.getEncoder().encode(Byte[])
和java.util.Base64.getDecoder().decode(Byte[])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.