2012-10-31 18 views
6

şu sınıfına yapılan bir gönderme yokturLegacy Java kodu kullanımı Ben 2003 yılında geri gelen bazı kod ile çalışıyorum

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

kimse bu sınıfı kullanarak uygun bir alternatif için herhangi bir öneriniz var mı: Bu bir hata neden oluyor?

+0

Bu sınıfı bilmiyorum, ancak 'ssl'yi okuyabiliyorum. Güvenli Yuva Katmanı ise, lütfen [javax.net.ssl. *] 'I (http://docs.oracle.com/javase/7/docs/api/javax/net/ssl/package-summary.html) – ignis

+2

düşünün. sağlayıcıyı bu şekilde elle oluşturmak için nadiren herhangi bir sebep. Buradaki kod nedir? – Bruno

cevap

2

Bu Eclipse tercihleri ​​Java->Compiler->Errors/Warnings->Deprecated and restricted API'da bir uyarı veya etkinlik dışı duruma dönüştürebilirsiniz. Diğerlerinin söylediği gibi, bu en iyi uygulama değildir ve alternatifleriniz olduğunda kaçınılmalıdır.

+1

Evet, yapabilirsin, ama genel olarak en azından küresel olmamalıydın. – sleske

+0

neden bunu reddetti? Eski kod ile ilgili geçerli bir yoldur –

+0

Genel bir tavsiye olarak tehlikeli buluyorum. Geçici bir çözüm olarak tamam olabilir. Düzenlemenizi beğendim ve indirimi kaldırdım. – sleske

6

Çoğu zaman, kendiniz bir sağlayıcı örneğini oluşturmanıza veya tutmanıza gerek yoktur. Oracle Providers documentation söylediği gibi: sağlayıcısı için bir aşırı yüklenme parametresi var her yerde

Ayrıca

General purpose applications SHOULD NOT request cryptographic services from specific providers. That is:

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

, bu bir dize veya bir örneği ya almaya meyilli, ancak dize (isim) muhtemelen daha yaygın olurdu. (Örneğin geçmesi bazen bazı PKCS # 11 konfigürasyonları için yararlı olabilir, fakat bu sıra dışıdır.)

JCA documentation about Providers yararlı olmalıdır.

Belirli bir örneği gerçekten almak istiyorsanız, Security.getProvider(name)'u kullanabilirsiniz. Sağlayıcıların isimlerini tedarikçilerin belgelerinde bulabilirsiniz.

3

Bu kod satırını atın. Ayrıca com.sun.net.ssl pakette ve alt paketlere herhangi bir referans atmak: onlar JSSE ayrı indirme olduğu günlerden beri, javax.net.ssl.

Bu ön JDK 1.4 koddur sınıfların atıfta böylece ithalatı düzeltin.