MalformedURLExceptionはJavaでどのようにスローされますか
-
02-07-2019 - |
質問
つまり、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に必要です。