2010-03-09 74 views
23

URL u =新URL(「telnet://route-server.exodus.net」);爲什麼java的URL類不能識別某些協議?

這條線被生成:

java.net.MalformedURLException:未知協議:遠程登錄

而且我遇到有與開始其他URL類似的問題 「消息://」

這些是網址,ODP中提取,所以我不明白爲什麼這樣的例外出現..

+0

謝謝大家,學到了新的東西.. – trinity

回答

40

問題

Java拋出MalformedURLException,因爲它找不到該協議的URLStreamHandler。有關詳細信息,請檢查構造函數的javadocs

摘要:

由於URL類有一個openConnection方法,URL類檢查,以確保Java知道如何打開正確的協議的連接。如果沒有該協議的URLStreamHandler,則Java拒絕創建URL,以便在嘗試撥打openConnection時使您免於失敗。

解決方案

你或許應該使用的URI類,如果你不開放的Java中這些協議的連接計劃。

+0

或者,可以實現自己的URLStreamHandler –

+1

非常感謝。 URI類是我的解決方案。 – Liuting

+0

我還可以發送數據(使用URI)嗎? – Lealo

4

聽起來像沒有註冊處理程序的協議「telnet」在您的應用程序。由於可以使用URL類將InputStream打開爲URL,因此如果允許您使用它創建對象,則需要爲協議註冊處理程序來執行此項工作。

有關如何添加處理程序的詳細信息,請參閱:http://docs.oracle.com/javase/7/docs/api/java/net/URLStreamHandlerFactory.html

+0

鏈接已損壞。 –

+0

@CookieMonster謝謝。修復。 –

2

簡單的答案是它只有確實識別某些協議,並且無法識別協議的其餘部分。

相關問題