8

私は 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

このクラスを使用するための適切な代替案はありますか?

4

3 に答える 3

8

そのコード行を捨ててください。また、com.sun.net.sslパッケージとそのサブパッケージへの参照を破棄します。インポートを修正して、クラスを参照するようにします。javax.net.ssl.

これは、JSSE が個別にダウンロードされていた時代の JDK 1.4 より前のコードです。

于 2012-11-01T22:59:15.077 に答える
8

ほとんどの場合、実際にプロバイダー インスタンスを自分で作成したり取得したりする必要はありません。Oracle Providersのドキュメントに次のように記載されています。

汎用アプリケーションは、特定のプロバイダーに暗号化サービスを要求すべきではありません。あれは:

getInstance("...", "SunJCE");  // not recommended
    vs.
getInstance("...");            // recommended

さらに、プロバイダーのオーバーロードされたパラメーターがある場合は、文字列またはインスタンスのいずれかを取る傾向がありますが、おそらく文字列 (名前) の方が一般的です。(インスタンスを渡すことは、たとえば一部の PKCS#11 構成の場合などに役立つ場合がありますが、通常はありません。)

プロバイダーに関するJCA ドキュメントが役立つはずです。

特定のインスタンスを本当に取得したい場合は、 を使用できますSecurity.getProvider(name)。適切な名前は、プロバイダーのドキュメントに記載されています。

于 2012-10-31T15:18:33.917 に答える
1

これを Eclipse プリファレンス で警告または非イベントに変えることができますJava->Compiler->Errors/Warnings->Deprecated and restricted API。他の人が言ったように、これはベストプラクティスではなく、代替手段がある場合は避けるべきであることに注意してください。

于 2012-10-31T15:05:28.590 に答える