2

次のエラーが発生します。

javax.imageio.IIOException: Can't read input file!
Resource not found: C:\icon.gif
at javax.imageio.ImageIO.read(ImageIO.java:1301)
at connector.SystemTrayCreator.createImage(SystemTrayCreator.java:98)
at connector.SystemTrayCreator.create(SystemTrayCreator.java:36)
at connector.Start.main(Start.java:14)
Exception in thread "main" java.lang.IllegalArgumentException: creating TrayIcon with     null Image
at java.awt.TrayIcon.<init>(TrayIcon.java:168)
at connector.SystemTrayCreator.create(SystemTrayCreator.java:36)
at connector.Start.main(Start.java:14)
Java Result: 1

次のコードから:

final TrayIcon trayIcon = 
            new TrayIcon(createImage("C:\\icon.gif", "Tray icon"));

protected static Image createImage(String path, String description) {
    Image image = null;

    try {
        File f = new File(path);
        image = ImageIO.read(f);
    } catch (Exception e) {
        e.printStackTrace();
    }

    if (image == null) {
        Debugger.showMessage("Resource not found: " + path);
        return null;
    } else {
        return (new ImageIcon(image, description)).getImage();
    }
}

パスが正しいと確信しています。また、名前は一致します。

誰もが何が悪いのか知っていますか?

4

1 に答える 1

2

あなたのコードは問題ないようです。理論的に考えられる問題として、現在 2 つのことが思い浮かびます。

  1. ファイル許可の問題。ドライブのルート以外の場所にファイルを配置し、そのアクセス許可を明示的に確認してください。canRead()コードから直接呼び出すことができます-それが何をするかImageIO.readです。返さなければなりませんtrue

  2. 引数の最後に空白がある可能性がありますpathtrim()その可能性を排除するために使用します。

于 2012-04-15T17:57:03.153 に答える