图像。IIO异常:无法读取输入文件

2022-09-02 04:15:08

我一周前开始使用Java,现在我想在我的窗口中插入一个图像。无论我尝试什么,我都会在Eclipse中保持这个:javax.imageio.IIOException:无法读取输入文件!

package graphics;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import src.Common;

public class Window extends JFrame
{
public class Panel extends JPanel
{

    public void paintComponent(Graphics g)
    {
        Image img; 
        try 
        {
        img = ImageIO.read(new File("/logo.jpg"));
        g.drawImage(img, 0, 0, this);
        } 
        catch (IOException e) 
        {
        e.printStackTrace();
        }

    }
}

public Window(String title, int width, int height)
{
    this.setTitle(title);
    this.setSize(width, height);
    this.setLocationRelativeTo(null);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setContentPane(new Panel()); 
    this.setVisible(true);
}

}

我认为代码非常自我解释。我试图用这个这个那个解决问题。

我试图做的是一个桌面程序,我的源代码是这样存储的:training/src/graphics/Window training/src/src/main

我确实把我想阅读的图像放在每个文件夹中,但仍然遇到问题:/

我做错了什么?

编辑终于解决了,这里的答案

nIcE cOw给了我一个有帮助的链接。因此,我确实将图像放入一个文件夹中,并更改了访问它们的方式,如链接中所述。

getClass().getResource("/images/yourImageName.extension");

答案 1

你有没有试过使用(没有前导 /)?new File("logo.jpg");

你确定,徽标.jpg被复制到你的输出中吗?(某些 IDE 不会将源目录中的每个文件复制到输出(或目标)目录。

/src
|-> Window.java
|-> Logo.jpg

成为

/out
|-> Window.class

(请注意,IDE/编译器不会将映像复制到输出目录,因此编译后的代码找不到该映像 - 尽管您指定了正确的路径)


答案 2

尝试调试您实际尝试访问的文件资源。第一步是获取并打印到(或者在调试器中监视)。我想问题是之前,它指向您的根目录(例如c:)并且您的文件不存在,但我不知道您的文件设置细节。new File("/logo.jpg").get [Canonical]Path()System.out/logo.jpg


推荐