2

JNLP で実行される .jar ファイル内の複数のリソースにアクセスする必要がある Java アプリケーションを作成しています。

アプリケーションは私の開発環境 (Eclipse) で正常に動作しますが、JNLP を介して実行すると動作しません。これは、jar 内のリソース ファイルが見つからないためと思われます。リソースファイルを確認しましたが、リソースは間違いなくそこにあります。

現在、次のようなコードを使用しています。

 someclass.getResourceAsStream("/resources/somefile.png");

JNLP で動作する .jar 内のリソース ファイルにアクセスする正しい方法は何ですか?

4

2 に答える 2

2

使用: this.getClass().getClassLoader().getResourceAsStream(name)
例: myClass.getClass().getClassLoader().getResourceAsStream("resources/somefile.png")

2 つのヒント:
1 - jar ファイルにある独自のクラスを使用します。別のクラス (オブジェクトなど) を使用した場合 - 失敗します
2 - 名前、つまりリソー​​スは先頭に「/」を付けないでください

于 2010-07-20T21:12:57.413 に答える
1

同様の問題でしばらく行き詰まり、@ Devon_C_Miller からのコメントが私を救ってくれたので (しばらくして見たら!)、ここに再コピーしようと思いました:

クラスを介してリソースを取得すると、「/」で開始しない限り、パスはクラスに対して相対的に解決されます。ClassLoader 経由で取得すると、常に絶対パスとして解決され、'/' で始まることはできません。

私の場合、JAR にあるファイルに対して次の構文を使用します/properties/config.properties

//NO LEADING `/` EVEN IF IT IS AN ABSOLUTE PATH
private final static String CONFIG_FILE = "properties/config.properties";
InputStream resource = Configuration.class.getClassLoader().getResourceAsStream(CONFIG_FILE);
于 2012-04-02T13:10:44.247 に答える