2

つまり、Javaはどのプロトコルが利用可能かをどのように決定するのでしょうか。Eclipse内からいくつかのコードを実行しましたが、問題なく動作します。次に、Eclipseの外部から同じコードを実行すると、「不明なプロトコル」のMalformedURLExceptionが発生します。おそらくそれはコードベースか何かに関係していますか?ヒントがあれば役に立ちます。

ありがとう!

4

3 に答える 3

1

プロトコルを解決する作業は、プロトコルによって小文字でURLStreamHandler格納されているによって行われます。URL.handlers次に、ハンドラーはURLStreamHandlerFactoryatによって作成されURL.factoryます。多分日食はそれで猿になっていますか?

一部のURLコンストラクターはストリームハンドラーを使用し、URL.setURLStreamHandlerFactoryを使用してファクトリを設定できます。

これは、プロトコルハンドラーの開発に関するWeb投稿です。

于 2008-09-26T13:08:25.780 に答える
0

プロトコルハンドラーを定義するJava標準の方法は、ここで説明されています:http: //java.sun.com/developer/onlineTraining/protocolhandlers/

これは、ブート(?)クラスローダーで使用可能なプロトコルハンドラークラスに依存しています。これはOSGi(したがってEclipse)ではうまく機能しません。OSGiは、バンドル/プラグインがプロトコルハンドラーに貢献できるようにするために、このメカニズムのラッパーを提供します。参照:http ://www.osgi.org/javadoc/r4v41/org/osgi/service/url/URLStreamHandlerService.html

Eclipseは、独自のプロトコルであるbundle-resource(iirc)も提供します。これは、Eclipseの外部では確実に機能しません。

于 2008-09-26T21:18:32.747 に答える
-1

おそらくクラスパスの問題です。含めたライブラリ(jar)に依存するプロトコルを使用していて、eclipseからJARをエクスポートした場合、プロジェクトに含めたJARファイルは、eclipseの外部で実行されているコードによって検出されない可能性があります。必要なライブラリを指すマニフェストファイルがjarに必要です。

于 2008-09-26T13:11:39.093 に答える