线程“main”java.lang.IllegalArgumentException中出现异常:输入==null!-我相信eclipse找不到png文件

线程“main”java.lang.IllegalArgumentException中出现异常:输入==null!-我相信eclipse找不到png文件,java,Java,我已经查找了多个其他答案和YouTube视频,并将我的PNG图像移动到每个可能的文件夹中,但没有任何效果,我仍然收到错误:线程主java.lang.IllegalArgumentException中的异常:input==null!。 目前我在Mac上使用eclipse,PNG文件位于一个图像文件中,该文件与bin和src处于同一级别 这是我的代码: testImage = loadImage("Images/GrassTile.png"); private BufferedImage load

我已经查找了多个其他答案和YouTube视频,并将我的PNG图像移动到每个可能的文件夹中,但没有任何效果,我仍然收到错误:线程主java.lang.IllegalArgumentException中的异常:input==null!。 目前我在Mac上使用eclipse,PNG文件位于一个图像文件中,该文件与bin和src处于同一级别

这是我的代码:

testImage = loadImage("Images/GrassTile.png");

private BufferedImage loadImage(String path)
{
    try 
    {
        BufferedImage loadedImage = ImageIO.read(Game.class.getClassLoader().getResourceAsStream(path));
        BufferedImage formattedImage = new BufferedImage(loadedImage.getWidth(), loadedImage.getHeight(), BufferedImage.TYPE_INT_RGB);
        formattedImage.getGraphics().drawImage(loadedImage, 0, 0, null);

        return formattedImage;
    }
    catch(IOException exception) 
    {
        exception.printStackTrace();
        return null;
    }
}
求求你帮帮我,这简直要了我的命,
谢谢。

请您测试一下是否可以将“图像”文件夹放入src中。然后将路径更改为/images/GrassTile.png,看看是否有差异

初始“/”应指向类装入器目录的根目录,该目录应为“src”。之后,它将尝试查找包含文件“GrassTile.png”的文件夹“images”

消息input==null意味着正在使用null调用read-您的代码找不到图像不要为此责备Eclipse

您正在使用类加载器将其作为映像获取,因此它必须位于类路径上,也就是说,映像必须位于bin文件夹中,假设该文件夹是类文件所在的文件夹,包括包结构

因为您使用的是Eclipse,所以您必须在src中创建Images文件夹,并且在编译时它将被复制到bin中。或者,创建一个资源文件夹,将其作为附加文件夹添加到项目的生成路径中,其中包含Images文件夹

查找java搜索位置的廉价技巧不可靠,类路径中有多个目录:System.out.printlnLoadImage.class.getClassLoader.getResource

注意:您也可以从类中调用getResourceAsStream,而无需调用getClassLoader-在这种情况下,搜索将从包中开始:

BufferedImage loadedImage = ImageIO.read(Game.class.getResourceAsStream(path));

在这种情况下,Images文件夹必须与类文件java文件位于同一文件夹包中;除非路径以/开头。如果您希望将资源保留在软件包中,这将非常有用。

我尝试在我的家用电脑上而不是Mac上进行尝试,并将包含GrassTIle.png文件的图像文件放入src文件中,但没有收到任何错误。所以我在我的Mac上启动了一个全新的软件包,我没有使用默认的软件包,我不知道这是否会产生效果,但是我只是在执行我所做的步骤,然后在src/com/raymond中创建了一个图像文件,其中包含GrassTile.png。然后我使用了路径/com/raymond/images/GrassTile.png,我没有收到任何错误,并且在刷新包后能够渲染图像。我真的看不出错误是什么,但现在已经修复了。感谢所有帮助过您的人。

异常在哪里抛出?是否检查了路径是否为null?引发异常:线程主java.lang.IllegalArgumentException中的异常:input==null!在javax.imageio.imageio.readImageIO.java:1348 at Game.loadImageGame.java:50 at Game.Game.java:41 at Game.mainggame.java:123I按照您的建议,我将包含GrassTIle.png的图像文件放入src文件,并使用您提供的路径,但我仍然收到相同的错误。是的,我认为这就是问题所在,谢谢,我尝试在src中放置图像,使用路径/images/GrassTile.png,但仍然收到相同的错误。我还调用了getResourceAsStream,没有任何更改。