2012-10-31 34 views
6

मैं 2003 में पीछे से कुछ कोड के साथ काम कर रहा हूँ निम्नलिखित वर्ग के लिए एक संदर्भ है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

किसी को भी इस वर्ग का उपयोग करने के एक उपयुक्त विकल्प के लिए कोई सुझाव है: यह एक त्रुटि उत्पन्न कर रहा है?

+0

मुझे वह कक्षा नहीं पता, लेकिन मैं 'एसएसएल' पढ़ सकता हूं। यदि यह सिक्योर सॉकेट लेयर है, तो कृपया [javax.net.ssl। *] पर विचार करें (http://docs.oracle.com/javase/7/docs/api/javax/net/ssl/package-summary.html) – ignis

+2

वहां है प्रदाता को मैन्युअल रूप से इस तरह तत्काल करने का कोई कारण नहीं है। चारों ओर कोड क्या है? – Bruno

उत्तर

2

आप इसे ग्रहण प्राथमिकताओं Java->Compiler->Errors/Warnings->Deprecated and restricted API में चेतावनी या गैर-ईवेंट में बदल सकते हैं। ध्यान दें, जैसा कि अन्य ने कहा है, यह सबसे अच्छा अभ्यास नहीं है और जब आपके पास विकल्प होते हैं तो इससे बचा जाना चाहिए।

+1

हां, आप कर सकते हैं, लेकिन आमतौर पर आपको कम से कम वैश्विक स्तर पर नहीं होना चाहिए। – sleske

+0

इसे क्यों वोट दें? यह विरासत कोड –

+0

से निपटने का एक व्यवहार्य तरीका है एक सामान्य सिफारिश के रूप में मुझे यह खतरनाक लगता है। अस्थायी समाधान के रूप में यह ठीक हो सकता है। मुझे आपका संपादन पसंद है और डाउनवोट हटा दिया गया है। – sleske

6

अधिकांश समय, आपको वास्तव में प्रदाता उदाहरण बनाने या पकड़ने की आवश्यकता नहीं होती है। Oracle Providers documentation कहते हैं:

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

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

इसके अलावा, जहाँ कहीं भी प्रदाता के लिए एक ओवरलोड पैरामीटर है, यह या तो एक स्ट्रिंग या एक उदाहरण ले जाता है, लेकिन स्ट्रिंग (नाम) शायद अधिक सामान्य हो जाएगा। (एक उदाहरण पास करना कभी-कभी उपयोगी हो सकता है, उदाहरण के लिए कुछ पीकेसीएस # 11 कॉन्फ़िगरेशन के लिए, लेकिन यह असामान्य है।)

JCA documentation about Providers उपयोगी होना चाहिए।

यदि आप वास्तव में एक विशिष्ट उदाहरण प्राप्त करना चाहते हैं, तो आप Security.getProvider(name) का उपयोग कर सकते हैं। आपको प्रदाता दस्तावेज़ों में उपयुक्त नाम मिलेंगे।

3

कोड की उस पंक्ति को फेंक दें। com.sun.net.ssl पैकेज और उसके उप-पैकेजों के किसी भी संदर्भ को फेंक दें: आयात को ठीक करें ताकि वे javax.net.ssl.

में कक्षाओं का संदर्भ लें, यह जेएसएसई एक अलग डाउनलोड था, जब से यह पूर्व-जेडीके 1.4 कोड है।