2017-05-30 98 views
1

我想將舊項目轉換爲maven項目。但是,當項目是Maven的話,就說明在類的警告與進口:訪問限制:'BASE64Decoder'類型不是API

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

訪問限制:類型 'BASE64Decoder' 沒有API(限制 所需的庫「C:\ Program Files文件\的Java \ jre7 \ lib \ rt.jar')

那麼它有什麼問題呢?

+1

參考https://stackoverflow.com/questions/860187/access-restriction-on-class-due-to-restriction-on-required-library-rt-jar – sasikumar

+2

你一般不會使用來自'sun.misc'的依賴關係。 –

+0

Java 8有一個標準的Base64編碼器/解碼器。番石榴也有。 Apache commons-codec也有一個。 –

回答

1

所有sun。*和com.sun。*軟件包對Java實現都是私有的。任何未來的Java版本都可能會改變它們,可能會破壞依賴它們的應用程序代碼。

相比之下,java。*,javax。*和javafx。*軟件包中的所有類都被設置爲石頭。他們的名字和公衆成員不會改變,也不會被刪除(理論上,已棄用的除外)。

這就是爲什麼你會收到一條消息,指出這些類不是公共API的一部分。它們不適合公共消費。

從Java 8開始,您應該使用java.util.Base64來代替。但是,看起來您正在使用Java 7,因此您需要使用DatatypeConverter.parseBase64BinaryDatatypeConverter.printBase64Binary

還應該提到的是,預計將於2017年7月發佈的Java 9將不允許程序訪問sun。*類。見https://mreinhold.org/blog/jigsaw-module-system