1

私の intellij は、ローカルの .png 画像を見つけることができません。

private String craft = "craft.png";
ImageIcon ii = new ImageIcon(this.getClass().getResource(craft));

.png は、Java ファイルと同じディレクトリにあります。なぜ機能しないのかわかりません。Mavenビルドを使用して、リソースからJavaに切り替えてみましたが、まだ運がありません:(

4

3 に答える 3

3

craft.pngsrc/main/resourcesそうしないと、Maven ルールに従ってクラスパスにコピーされません。詳細については、この回答を参照してください。

コードも次のように変更する必要があります。

private String craft = "/craft.png";

サンプル作業プロジェクトは次のとおりです。

于 2013-09-03T21:38:10.153 に答える
1

リソースからJavaに切り替えてみました

ということで、まずはcraft.pngを に入れてみましたsrc/main/resources。これは、Maven に従って配置する必要がある場所です (src/main/java ではありません)。

しかし 、 this.class の packagethis.getClass().getResource("craft.png")を基準にして "craft.png" を見つけようとするため、うまくいきませんでした。this.classがパッケージfoo.barにある場合は、 craft.pngを入れる必要がありますsrc/main/resources/foo/bar/

先頭にスラッシュを使用して、 getResource() で絶対パスを指定することもできます/。たとえば、craft.png を resources の下のカスタム フォルダーに配置し、 customFolderの前にsrc/main/resources/customFolder/先頭のスラッシュを付けて読み取ります。/
this.getClass().getResource("/customFolder/craft.png")

メソッドで先頭のスラッシュを使用しない場合getResource()、内部的にクラスのパッケージ名がリソース名の前に追加されて絶対になります。この動作はClass.getResource()で説明されています

于 2013-09-03T22:35:18.403 に答える