web-dev-qa-db-ja.com

JavaのURLクラスが特定のプロトコルを認識しないのはなぜですか?

URL u = new URL( "telnet://route-server.exodus.net");

この行は生成しています:

Java.net.MalformedURLException:不明なプロトコル:telnet

また、「news://」で始まる他のURLでも同様の問題が発生します。

これらはODPから抽出されたURLであるため、このような例外が発生する理由がわかりません。

27
trinity

問題

Javaは、そのプロトコルのMalformedURLExceptionを見つけることができなかったため、URLStreamHandlerをスローします。詳細については、コンストラクタの javadocs を確認してください。

概要:

URLクラスにはopenConnectionメソッドがあるため、URLクラスはJavaが接続を開く方法を知っていることを確認しますそのプロトコルのURLStreamHandlerがないと、JavaはURLの作成を拒否し、openConnection

ソリューション

Javaでこれらのプロトコルの接続を開く予定がない場合は、おそらく URI クラスを使用する必要があります。

44
Ben S

アプリケーションにプロトコル「telnet」の登録済みハンドラーがないようです。 URLクラスを使用してInputStreamto URLを開くことができるため、それを使用してオブジェクトを作成できるようにするには、プロトコルがこの作業を行うためのハンドラーを登録する必要があります。

ハンドラーの追加方法の詳細については、以下を参照してください。 http://docs.Oracle.com/javase/7/docs/api/Java/net/URLStreamHandlerFactory.html

4
Ian C.

簡単な答えは、それだけがdoes特定のプロトコルを認識し、プロトコルの無限の残りは認識されないということです。

3
user207421

Javaにはtelnet用の標準 プロトコルハンドラ がないため、このエラーが発生します。

3
objects