1. 程式人生 > >錯誤總結:Access restriction: The type ** is not accessible due to restriction on required library

錯誤總結:Access restriction: The type ** is not accessible due to restriction on required library

來到新公司,下載程式碼檢視後發現有很多地方標紅報錯了.     仔細一看都是Access restriction: The type ** is not accessible due to restriction on required library型別的錯誤,這種錯誤的原因一般都是引用了jdk中非標準的類導致的. 例如:import sun.misc.BASE64Decoder;和import sun.misc.BASE64Encoder; 這兩個類都在sun.misc包下,在jdk提供的rt.jar中,但是非標準的JavaApi介面. 處理的一般方法有兩種:     方法1. 修改eclipse的錯誤級別設定: Windows -> Preferences -> Java -> Compiler -> Errors/Warnings ->  Deprecated and trstricted API -> Forbidden reference (access rules): -> change to warning sun.**包裡的類,在eclipse裡預設的級別是Error,修改為warning後錯誤即可消失。     方法2.自定義access rules 工程上右鍵->工程屬性->java builder path->Libraries標籤,點選JRE System Library裡面的Access rules,add sun/** 為accessible,見下圖

    按照方法1修改後很多地方標紅的地方已經不再報錯,但是引用這個類(sun.net.ftp.FtpClient;)的地方還是報錯.經查閱後發現,原來jdk7已經將FtpClient修改為了abstract類,而且其中的方法也有不少變動.以前在Jdk6中可以用的openServer/login/binary/closeServer等方法在jdk7中已經不能用了.將專案所使用的Jdk版本從7降為6後,所有的報錯消失.   擴充套件:     為了專案可執行暫時調整為JDK6是可以的,但這絕對不是一個好辦法,現在JDK8都已經出現好長時間了,我們為了以後平滑升級,最好不要用sun.**下的類.     對於使用sun.misc.BASE64Decoder類的地方可以考慮使用org.apache.commons.codec.binary.Base64替換,對於使用sun.net.ftp.FtpClient類的地方可以考慮使用org.apache.commons.net.ftp.FTPClient替換. --------------------- 本文來自 天賦吉運李坤 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/lk_blog/article/details/45371813?utm_source=copy