我正在使用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),但看起来他和我的问题略有不同。
答案 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());