0

Eclipse ワークスペースで JPanel ディスプレイを作成しています。次のコードがあります。

BufferedImage img = null;
try {
    img = ImageIO.read(new File("anno.png"));
} catch (IOException e) {System.out.println(e);}

そして、これが含まれているクラスと同じパッケージ内のファイル「anno.png」に。ただし、これを実行すると、常に次のメッセージが表示されます。

javax.imageio.IIOException: Can't read input file!

私は何を間違っていますか?

4

2 に答える 2

1

あなたは正しい場所を見ていません。Java は、クラス ディレクトリではなく、ユーザー ディレクトリに基づくディレクトリ内のファイルを検索します。

ソリューション:

  • ファイルの代わりにリソースを使用します。リソース ディレクトリは、クラス ディレクトリに基づいています。
  • または、ユーザーディレクトリが何であるかを調べますが、イメージを読み込もうとする前にファイルの絶対パスを出力します。

私は前者を支持します。ファイルではなく、リソースを使用します。つまり、getClass().getResourceAsStream("anno.png");

BufferedImage img = null;
try {
    img = ImageIO.read(getClass().getResourceAsStream("anno.png"));
} catch (IOException e) {
    e.printStackTrace();
}
于 2013-11-03T01:48:15.590 に答える