パッケージのsrc /フォルダから画像を取得しようとしていますが、何の成功もありません。srcフォルダのToolkit.getImage()
nekoPics[i] = tk.getImage(getClass().getResource(String.format("resources/pracs/neko/%s", nekosrc[i])));
誰でも募集しますか?
パッケージのsrc /フォルダから画像を取得しようとしていますが、何の成功もありません。srcフォルダのToolkit.getImage()
nekoPics[i] = tk.getImage(getClass().getResource(String.format("resources/pracs/neko/%s", nekosrc[i])));
誰でも募集しますか?
コードが作成されている場所にコピーされていますか?ディレクトリがsrc
の場合、実行時にクラスがbin
ディレクトリ(またはjarファイル)にある場合は役に立ちません。
クラスがパッケージ内にある場合、Class.getResource
はデフォルトでそのパッケージに相対して動作します。パッケージがfoo.barの場合、foo/bar/resources/pracs/neko/whatever
を探しています。あなたはそれを絶対にしたい場合は、ClassLoader.getResource
を使用するか、またはあなたの文字列の先頭でリード/
を置くことができ、次のいずれかもちろん
String resource = String.format("/resources/pracs/neko/%s", nekosrc[i]);
nekoPics[i] = tk.getImage(getClass().getResource(resource));
または
String resource = String.format("resources/pracs/neko/%s", nekosrc[i]);
nekoPics[i] = tk.getImage(getClass().getClassLoader().getResource(resource));
、reousrces
ディレクトリがある場合実際にあなたのパッケージを基準にして、それを行うべきではありません:
getClass().getResource()
を相対パスで使用すると(すなわち、で始まらないもの)、パスはリソースをロードするために使用しているクラスのパッケージに関連してと解釈されます。
そのコードがクラスmypackage.MyClass
にある場合、resources/pracs/neko/something
を要求すると、実際にはクラスパスに対してmypackage/resources/pracs/neko/something
が見つかりません。
チャームのように働いてくれましたが、クラスローダーが正しいパスからリソースを取得する方法はありますか? Javaで画像リソースを処理する典型的な方法は何ですか?あなたはどこにプロジェクトを置くのですか? –
@Alex:それはあなたのビルド環境に依存します - それを行う方法はたくさんあります。クラスローダーは論理的な「ルート」を知っています。それだけです。 –