【发布时间】:2011-11-01 00:03:27
【问题描述】:
BufferedImage = ImageIO.read(getClass().getResourceAsStream("/Images/player.gif"));
首先,是的,我确实将图像文件夹添加到了我的类路径中。
为此我收到错误java.lang.IllegalArgumentException: input == null!
我不明白为什么上面的代码不起作用。从我阅读的所有内容来看,我不明白为什么它不会。有人告诉我应该使用FileInputStream 而不是GetResourceAsStream,但是,正如我刚才所说,我不明白为什么。我已经阅读了有关方法和各种指南的文档,这似乎可行。
编辑:好的,试图澄清一些关于我在类路径中的内容。
这是一个在 Eclipse 中创建的项目。一切都在项目文件夹DreamGame 中,包括“Images”文件夹。 DreamGame 当然是在类路径中。我知道这是可行的,因为我正在阅读 /Images 中的文本文件,其中包含代码前面的 gif 信息。
所以我有:/DreamGame/Images/player.gif
编辑 2:当前在原始帖子中的行是所有被传递的内容;没有/DreamGame/Images/player.gif,只有/Images/player.gif。这是来自ImagesLoader 类中的一个方法,当创建来自PlayerSprite 的对象时调用该方法。主类是DreamGame。我使用Run 选项直接从 Eclipse 运行代码,没有特殊参数
试图弄清楚如何找到哪个类加载器正在加载该类。抱歉,与大多数人相比,我在这方面还很陌生。
好的,这就是 getClassLoader() 得到的:sun.misc.Launcher$AppClassLoader@4ba778
getClass().getResource(getClass().getName() + ".class") 返回/home/gixugif/Documents/projects/DreamGame/bin/ImagesLoader.class
图像文件也被放入bin。为了仔细检查,我从bin 中删除了文件,清理了项目并运行了它。还是一样的问题,图片文件又回到bin
【问题讨论】:
-
确定该路径不是文件系统上的绝对路径,而是来自类路径的路径?
标签: java bufferedimage