2010-03-09 14 views
23

यूआरएल यू = नया यूआरएल ("टेलनेट: //route-server.exodus.net");जावा का यूआरएल क्लास कुछ प्रोटोकॉल क्यों नहीं पहचानता है?

इस लाइन पैदा कर रहा है:

java.net.MalformedURLException: अज्ञात प्रोटोकॉल: टेलनेट

और मुझे अन्य यूआरएल के साथ शुरू के साथ इसी तरह की समस्याओं का सामना "समाचार: //"

ये हैं यूआरएल ODP से निकाली गई है, तो मुझे नहीं समझ में क्यों इस तरह के अपवाद उत्पन्न होती हैं ..

+0

सभी के लिए धन्यवाद, कुछ नया सीखा .. – trinity

उत्तर

40

अंक

जावा MalformedURLException फेंकता है क्योंकि इसे उस प्रोटोकॉल के लिए URLStreamHandler नहीं मिला। विवरण के लिए रचनाकारों के javadocs देखें।

सारांश:

के बाद से URL वर्ग एक openConnection विधि है, यूआरएल वर्ग चेकों यकीन है कि जावा कैसे सही प्रोटोकॉल का एक कनेक्शन को खोलने के लिए कोई जानता है कि बनाने के लिए। उस प्रोटोकॉल के लिए URLStreamHandler के बिना, जावा पर कॉल करने का प्रयास करते समय आपको विफलता से बचाने के लिए URL बनाने से इंकार कर देता है।

समाधान

आप शायद URI वर्ग का उपयोग करना चाहिए अगर आप जावा में उन लोगों के प्रोटोकॉल के एक कनेक्शन खोलने पर योजना नहीं है।

+0

या कोई भी अपना यूआरएलस्ट्रीमहैंडलर –

+1

लागू कर सकता है। यूआरआई कक्षा मेरे लिए समाधान है। – Liuting

+0

क्या मैं अभी भी डेटा भेज सकता हूं (यूआरआई का उपयोग कर)? – Lealo

4

लगता है कि आपके आवेदन में प्रोटोकॉल "टेलनेट" के लिए कोई पंजीकृत हैंडलर नहीं है। चूंकि यूआरएल क्लास को यूआरएल में इनपुटस्ट्रीम खोलने के लिए इस्तेमाल किया जा सकता है, इसलिए प्रोटोकॉल के लिए यह काम करने के लिए एक पंजीकृत हैंडलर होना चाहिए यदि आपको इसका उपयोग करने के लिए ऑब्जेक्ट बनाने की अनुमति है।

कैसे संचालकों को जोड़ने के लिए पर जानकारी के लिए देखें: http://docs.oracle.com/javase/7/docs/api/java/net/URLStreamHandlerFactory.html

+0

लिंक टूटा हुआ है। –

+0

@CookieMonster धन्यवाद। ठीक कर दिया। –

2

आप क्योंकि जावा टेलनेट के लिए एक मानक protocol handler नहीं है कि त्रुटि हो रही है।

2

सरल उत्तर यह है कि यह केवल है कुछ प्रोटोकॉल को पहचानता है, और प्रोटोकॉल की अनंतता के शेष को मान्यता नहीं है।

संबंधित मुद्दे