2013-04-26 101 views
0

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

在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文件的错,我已经在全搜索路径实际上进入了(我“M使用的是Mac),并且完美地工作:

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

不过,我不想做的完整路径,因为如果我出口的程序和另一台计算机上运行它,然后在非计算机编程也不会显示图像。

所以,现在我甚至不知道问题是什么。 .gif文件有时可以工作,但不能在通过与.txt文件相同的路径访问时,该文件始终可用。我试着在这里寻找(Cannot access resource by using the getResources() method),但似乎他与我的问题稍有不同。

+0

我最近刚发现的这个问题的答案(这得感谢我的东西在这里读到:HTTP: //stackoverflow.com/questions/12436851/icon-in-src-folder?rq=1)。我做的是'ImageIcon icon = new ImageIcon(Main.class.getResource(“/ memory/resources/name.gif”));'。 :)现在唯一要做的就是在另一台电脑上测试它。感谢大家的帮助!我非常感激。 – user2323030 2013-04-27 09:20:31

回答

0

您可以使用

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

前提是你的name.gif文件编译/编译后的classpath结束。

+0

谢谢,重要。我试过了,但也没有奏效。它给了我一个java.lang.NullPointerException错误。 – user2323030 2013-04-27 09:12:42

+0

好的,所以我猜你的类路径指向根目录/,因为它位于“/ memory/resources /”子目录中,所以无法找到你的gif。 'ClassLoader.getSystemResource(“/ memory/resources/name.gif”);'应该已经工作 – vitaly 2013-04-30 20:04:45

0

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

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

+0

谢谢Bhushan Bhangale。 ImageIcon不是我自己的课程,我在某处找到了一个例子(我现在忘记了)。关于你的代码,我在理解时遇到了一些麻烦 - 主要是由于缺乏上下文。我不确定我应该在哪里插入。 – user2323030 2013-04-27 09:11:12

0

看看这个工程...

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

+0

谢谢deviprasad742。我试过了,但没有奏效。它没有返回错误,但没有显示图像。 – user2323030 2013-04-27 09:09:51

相关问题