【问题标题】:How do I access a .gif file in a package in the src folder?如何访问 src 文件夹中包中的 .gif 文件?
【发布时间】:2013-04-26 18:47:32
【问题描述】:

我正在使用 Eclipse 开发 Java 程序。现在,我有一个 src 文件夹,其中包含 2 个包:memory.views 和 memory.resources。

在 memory.views 包中,我有我的 Main.java 文件。在 memory.resources 包中,我有我的 .txt 文件和 .gif 文件。

在程序中,使用路径/memory/resources/name.txt 访问(和操作).txt 文件没有问题。但是,当我使用下面的代码对 .gif 文件执行相同操作时,我没有得到任何结果:

ImageIcon icon = new ImageIcon("/memory/resources/name.gif");

没有产生错误。唯一的影响是程序运行时看不到图像。

我也尝试过编写以下内容,但都没有成功:

ImageIcon icon = new ImageIcon("/resources/name.gif"); <br>
ImageIcon icon = new ImageIcon("name.gif");

现在,没有人说这是 .gif 文件的错,我实际上已经输入了完整的 Finder 路径(我使用的是 Mac)并且效果很好:

ImageIcon icon = new ImageIcon("/Users/[...]/src/memory/resources/name.gif");

但是,我不想做完整路径,因为如果我导出程序并在另一台计算机上运行它,那么非编程计算机也不会显示图像。

所以,现在,我什至不知道问题出在哪里。 .gif 文件有时有效,但在通过与 .txt 文件相同的路径访问时无效,该文件始终有效。我试着看这里(Cannot access resource by using the getResources() method),但他的问题似乎与我略有不同。

【问题讨论】:

  • 我最近刚刚找到了这个问题的答案(部分感谢我在这里阅读的内容:stackoverflow.com/questions/12436851/icon-in-src-folder?rq=1)。我所做的是'ImageIcon icon = new ImageIcon(Main.class.getResource("/memory/resources/name.gif"));'。 :) 现在唯一要做的就是在另一台计算机上测试它。感谢大家的帮助!我非常感谢。

标签: java package gif src


【解决方案1】:

你可以使用

URL url = ClassLoader.getSystemResource("name.gif");
ImageIcon icon = new ImageIcon(url);

前提是您的 name.gif 文件在编译/构建后最终位于类路径中。

【讨论】:

  • 非常感谢您。我试过这个,但它也没有用。它给了我一个 java.lang.NullPointerException 错误。
  • 好的,所以我猜你的类路径指向根 / 并且你的 gif 无法找到,因为它位于“/memory/resources/”子目录中。 ClassLoader.getSystemResource("/memory/resources/name.gif"); 应该有效
【解决方案2】:

这个 ImageIcon 类是什么?是你自己的代码吗?

试试Thread.currentThread().getContextClassLoader().getResourceAsStream("/memory/resources/name.gif");

【讨论】:

  • 谢谢你,Bhushan Bhangale。 ImageIcon 不是我自己的课程,我在某个地方找到了它的一个例子(我现在忘记了)。关于您的代码,我在理解它时遇到了一些麻烦——主要是由于缺乏上下文。我不确定应该在哪里插入。
【解决方案3】:

看看这是否有效...

File file = new File("/memory/resources/name.gif");
ImageIcon icon = new ImageIcon(file.getAbsolutePath());

【讨论】:

  • 谢谢你,deviprasad742。我试过这个,但它没有用。但它没有返回错误,只是没有显示图像。
猜你喜欢
  • 1970-01-01
  • 2019-05-01
  • 1970-01-01
  • 2016-05-07
  • 2017-10-03
  • 1970-01-01
  • 1970-01-01
  • 2018-11-25
  • 1970-01-01
相关资源
最近更新 更多