【问题标题】:ImageIO in JavaJava中的ImageIO
【发布时间】:2016-01-09 08:59:26
【问题描述】:

我是刚开始学习 Java 的二年级学生。我有这段代码,它一直抛出异常:

try
{
    masterFish = ImageIO.read(getClass().getResource("fish1.gif"));
} 
catch (IOException iOException)
{
    iOException.printStackTrace();
}

有人能解释一下fish1.gif 部分吗?我应该在某处下载名为fish1.gif 的图像吗?

【问题讨论】:

  • 要使该代码正常工作,您需要在运行时类路径中的某个位置使用 fish1.gif。
  • 具体来说,fish1.gif 应该与试图加载它的类在同一个包中。如果 gif 是动画 gif,那么您将不想使用 ImageIO,而是需要使用 ImageIcon
  • 你能告诉我们它抛出了什么异常
  • 感谢您的反馈,我最终通过将图像放在资源文件夹中使其工作。

标签: java image


【解决方案1】:

看到这个问题:Loading resources using getClass().getResource()

getClass()getResource() 方法将尝试使用类文件(.class 扩展名)作为参考点来查找资源。因此,您的文件应该位于类文件所在的同一位置。例如,如果您的类是 com.example.MyClass,您的“fish1.gif”文件应该位于目录 /src/com/example 中。

混合资源和源代码通常被认为是不好的风格,因此您可能希望在项目的根目录中创建一个目录“资源”,将资源放置在合适的层次结构中,并以集中方式访问它们.

【讨论】:

    【解决方案2】:

    它很可能找不到“fish1.gif”。确保在编译代码时,“fish1.gif”与“MAIN CLASS”位于同一目录中。或者,您可以专门写下它在硬盘上的位置,而不只是“fish1.gif”... 示例:“C:/Users/name/Desktop/fish1.gif”。

    【讨论】:

    • 我现在在 src 文件中有它(我正在使用 Intellij)。它应该在其他地方吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多