如何访问src文件夹中的包中的.gif文件?

时间:2013-04-26 09:10:47

标签: java package gif src

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

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

在程序中,使用路径.txt访问(和操作)/memory/resources/name.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),但看起来他和我的问题略有不同。

3 个答案:

答案 0 :(得分:0)

您可以使用

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

前提是您的name.gif文件在编译/构建后以类路径结束。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

看看这是否有效......

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