15

これは、このサイトで 100 回ほど尋ねられた質問ですが、私はそれらすべてを調べましたが、すべて解決されたにもかかわらず、どの解決策もうまくいきませんでした。

私のコードは次のようになります。

public Button1(Client client, String imgName) {
    this.client = client;   

    try {
        this.icon = ImageIO.read(this.getClass().getResourceAsStream("/resources/" + imgName));
    } catch (IOException e) {
        e.printStackTrace();
    }

コードを実行すると、次のエラーが発生します。

Exception in thread "main" java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(Unknown Source)

文字列 imgName は、子クラスからコンストラクターに渡され、画像の名前です (例: image.png)。また、リソース フォルダーがプロジェクト フォルダーのルートにあり、Eclipse プロジェクトのソース フォルダーとして含まれていることも確認しました。System.getProperty("user.dir")また、それが正しい場所を指していることも確認しました。getResourceAsStream() の代わりに getResource() を使用してみましたが、それでも機能しません。

4

11 に答える 11

13

これを使ってみてください:-

this.icon = ImageIO.read(new FileInputStream("res/test.txt"));

ここで、resフォルダはフォルダと同じレベルにありsrcます。また、お気づきの方もいらっしゃると思いますが、フォルダ名/の前のスラッシュは削除されています。res

于 2013-03-15T04:47:34.740 に答える
1

getResourceAsStream() に引数として渡されるパスは、クラスパス セットに対して相対的である必要があります。これを変更してみてください

this.icon = ImageIO.read(this.getClass().getResourceAsStream("/resources/" + imgName));

this.icon = ImageIO.read(this.getClass().getResourceAsStream("resources/" + imgName));
于 2013-03-15T04:52:00.153 に答える
0

以下を使用してみてください

this.icon = ImageIO.read(this.getClass().getResourceAsStream("../resources/" + imgName));
于 2013-03-15T06:16:06.483 に答える
0

これを試して:

this.icon = ImageIO.read(this.getClass().getResource("/resources/" + imgName));
于 2013-03-15T04:38:46.993 に答える
-1

これを試すことができます:

image = ImageIO.read(getClass().getResource("/resources/" + imgName));
于 2013-03-15T05:00:10.080 に答える