簡體   English   中英

使用com.sun.net.ssl.internal.ssl.Provider()的舊Java代碼

[英]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配置,但這很不尋常。)

有關提供者JCA文檔應該是有用的。

如果您真的想要獲取特定實例,可以使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM