2017-01-19 2 views
1

現在、私はバンドルクラスパスからWSDLリソースを取得してFileLocator.toFileURLを呼び出してバンドルリソースからファイルに変換しようとしている問題に直面していますリソース。実行時に、このメソッドはURLConverterのインスタンスを取得しようとしているときにNullPointerExceptionをスローします。なぜこのようなことが起こるのか、かなり困惑しています。以下は私が使用しているコードです。FileLocator.toFileURLがIBM WebSphereバンドルでNPEを投げる

URL configURL = Preference.class.getResource("/META-INF/wsdl/Preference.wsdl"); 

if (configURL != null && configURL.getProtocol() != "file") { 
    System.out.println("URL is not a file. Trying to convert from non-standard to something reference-able."); 
    URL wsdlURL = null; 

    try { 
     wsdlURL = FileLocator.toFileURL(configURL); 
    } catch (IOException e1) { 
     System.out.println("IOException caught"); 
     e1.printStackTrace(); 
    } catch (NullPointerException e1) { 
     System.out.println("NullPointerException caught"); 
     e1.printStackTrace(); 
    } catch (RuntimeException e1) { 
     System.out.println("RuntimeException caught"); 
     e1.printStackTrace(); 
    } catch (Exception e1) { 
     System.out.println("generic Exception caught"); 
     e1.printStackTrace(); 
    } 

    PREFERENCE_WSDL_LOCATION = wsdlURL; 
} else { 
    System.out.println("URL is a file."); 
    PREFERENCE_WSDL_LOCATION = configURL; 
} 

私はRADにローカルでコードを実行すると、それが正常に動作します。しかし、EclipseでOSGiコードを開発する人のほとんどは、この種のものを見つけると、展開時にクラッシュすることになります。具体的には、OSGi Composite Bundle Archive(CBA)にパッケージ化され、WebSphere v8.5.5アプリケーション・サーバーにデプロイされます。以下は私が実行し続けるエラーとそのスタックトレースです。

私は明らかな何かを欠いていないことを確認するためにいくつかの健全性チェックを行いました。 configURL変数は値(bundleresource://2.fwk685840929/META-INF/wsdl/Preference.wsdl)を返しています。このワークフローに必要なすべての依存関係がクラスパス(主に春分ライブラリとeclipse.osgiライブラリ)に追加されています。

私はすべての場所でgoogle'd、および2つの主要な資源見つけた

:私は正確に同じ行番号をFileLocatorとの両方の「犯罪のシーンに存在」しているActivatorのソースコードを、そしてthis Eclipse bug report私のスタックトレースで見ています。 OSGiバンドルをWebSphereのOSGiエコシステムにそのまま展開すると、このエラーはどのように可能になるのでしょうか? grepcodeの行番号が信頼されるならば、エラーは明らかにurlTrackers変数で、バンドルの問題とは違うように見えますが、本当に私が制御できるものではありません。

私はこれを少し考えすぎているように感じるので、ここで助けが必要です。実際に実行時にFileConverterクラスを実際に動作させるにはどうすればよいですか?

答えて

0

FileLocatorで必要とされるURLコンバータbundleentryを含むorg.eclipse.osgiプラグインの利用可能性をJavaDocコメントが参照していると思います。

FileLocatorは実際にはEclipse RCP環境の外で動作するように設計されています。

+0

'org.eclipse.osgi'プラグインの利用可能性はどういう意味ですか?私のクラスパスにあり、MANIFEST.MFにオプションのインポートされたパッケージを追加しました。さらに、それが利用できない場合、NPEの代わりにClassNotFoundまたはClassNoDef例外を取得しないでしょうか? – lilweirdward

+0

OSGiサービスを探していて、クラスが見つからないというエラーが出ないため、NPEを取得します。 –

+0

しかし、WebSphereはOSGiサービスで動作します。 – lilweirdward

関連する問題