質問

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

ありがとう!

役に立ちましたか?

解決

プロトコルの解決作業は、 URLStreamHandler 。プロトコルによって小文字で URL.handlers に保存されます。ハンドラーは、 URL.factory のURLStreamHandlerFactory 。たぶん、日食はそれと猿ですか?

URLコンストラクターはストリームハンドラーを取得し、 URL.setURLStreamHandlerFactory

プロトコルハンドラーの開発に関するウェブ投稿です。

他のヒント

プロトコルハンドラを定義する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以外では確実に機能しません。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top