最近、getResourceAsStream メソッドの非常に奇妙な動作に遭遇しました。
Windows で開発したアプリケーションがあります。このアプリは、OSGI フレームワークに基づくデスクトップ アプリケーションです。バンドルを作成し、必要なパッケージをセットアップし、これらのパッケージにいくつかのデータ ファイルを追加して、それらが jar ファイル内に含まれるようにしました。
それを使用してデータをロードします:
this.getClass().getResourceAsStream("pl/com/myapp/resource.dat");
Eclipse と、アプリケーションをデプロイして IDE の外部のシステムで実行したときの両方でうまく機能しました。
その後、開発をubuntu 12.04に移しました。驚いたことに、上記のメソッドは常に null を返します。データはあるべき場所にあります。すべての設定は問題ないようです。構成ファイルに絶対パスはありません。
私は多くの異なることを試しました。パスを次のように変更しました。
this.getClass().getResourceAsStream("/pl/com/myapp/resource.dat");
パッケージルートを含めないようにしましたが、クラスの場所に相対的なパスを挿入しようとしました (私のクラスが pl.com.myapp.MyClass であると仮定しましょう):
this.getClass().getResourceAsStream("resource.dat");
私も試しました:
this.getClass().getResourceAsStream("./resource.dat");
しかし、何も機能しませんでした:(
しかし、単純な Java アプリケーションを作成すると、すべてがスムーズに機能し、メソッドは適切なストリームを返します。
誰かがそのような問題に遭遇しましたか?
ubuntu 12.04でeclipse-junoを使用しています。