![](/img/trans.png)
[英]Can't acces com.sun.net.ssl.internal.ssl.Provider() Java MailApi
[英]Legacy Java code use of com.sun.net.ssl.internal.ssl.Provider()
我正在使用2003年的一些代碼。有一個對以下類的引用:
new com.sun.net.ssl.internal.ssl.Provider()
它導致錯誤:
Access restriction: The type Provider is not accessible due to restriction on required library /Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home/jre/lib/jsse.jar
有沒有人對使用這個類的合適替代方案有任何建議?
大多數情況下,您實際上並不需要自己創建或獲取提供程序實例。 正如Oracle Providers文檔所述 :
通用應用程序不應該向特定提供商請求加密服務。 那是:
getInstance("...", "SunJCE"); // not recommended vs. getInstance("..."); // recommended
此外,只要有供應商的重載參數,它往往采用字符串或實例,但字符串(名稱)可能更常見。 (有時傳遞實例可能很有用,例如對於某些PKCS#11配置,但這很不尋常。)
如果您真的想要獲取特定實例,可以使用Security.getProvider(name)
。 您可以在提供程序文檔中找到相應的名稱。
扔掉那行代碼。 同時拋棄對com.sun.net.ssl
包及其子包的任何引用:修復導入,使它們引用javax.net.ssl.
的類javax.net.ssl.
這是JDK 1.4之前的代碼,從JSSE單獨下載開始。
您可以在Eclipse首選項Java->Compiler->Errors/Warnings->Deprecated and restricted API
中將其轉換為警告或非事件。 請注意,正如其他人所說,這不是最好的做法,應該避免在有替代方案時使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.