2012-03-27 10 views
0

私はすべての質問を答えと一緒に読みましたが、それでも私にとってはうまくいきません。Webアプリケーションのjarファイルからリソースをロードする

私のWebアプリケーションでは、画像とXMLをほとんど含まないjarファイルがあります。これらは、そのjar自体のクラスによって必要とされます。だから私は、以下のように必要な行を変更:

を私が使用して(瓶自体の内部に存在している)のリソースを参照するために、私のjarファイル内のクラスを変更:

Thread.currentThread().getContextClassLoader().getResource(path) // returns null 

私も前にしようとした:

MyClassName.class.getResource(path) // null again 

私はこれについて多くを読んで、コードの後の行がリソースを拾うことができることを知りましたが、残念なことにどちらも私のために働いていません。

注:Tomcat7上で実行され、私はVista上で動作しておりますので、私のように「パス」の値を取得する「\ MYFOLDER \画像\」

おかげ

+1

Webアプリケーションで、それは人々が瓶内XMLSを扱うお役に立てば幸いですか – davidfrancis

+0

jarの別のconfig.xml(完全に読み込まれている)からパスが選択されます。xmlに指定されたパスは '/ alpha/images'です。つまり MyJar.jar | | ___アルファ | | ____images Windowsのために\ alpha \ imagesに変更されます(唯一の理由だと思います) – Akshat

+0

getResourceメソッドに渡すパスの正確な値を指定できますか?クラスローダーを使用するか、クラスメソッドを使用してリソースを検索するかによって、異なる必要があります。 "クラス"バージョンのパス(私がお勧めしたい)は、 "images/myImage.gif"のようなものでなければなりません。これはあなたのイメージが現在のクラスのパッケージフォルダのイメージサブフォルダにあると仮定し、イメージファイルはmyImage.gifと呼ばれます。 – davidfrancis

答えて

1

いくつかのポイントがあります。一つは時に注意する必要がありますWebアプリケーションに埋め込まれたjar内からリソースをロードする

  1. ファイルをロードすることは、リソースをロードすることとは異なります。 File.seperatorを使用すると、通常はファイルと絶対パスが使用されます。リソースのロードにはお勧めできません。
  2. jar内からリソースをロードするときは、を使用せず、通常の '/'をそのまま相対パスとして使用してください。
  3. jar内のxmlからプロパティを読み取っていて、そのプロパティが別の場所を参照している場合は、 '/'スラッシュで読み込んでいることを確認してください。それは「/」で置き換えられますので、再度、File.seperatorをロードするリソースのために動作しません「\」(Windowsシステム)最後に
  4. 、次の行

    MyCurrentClass.classを、あなたのjarファイルのコード内のリソースを読み込む使用する場合。 getResource(パス)

はあなたのリソースファイルまたはファイルの場所を使用していただきましたしている正確なパス値は何ですか?

関連する問題