2013-04-26 100 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

相關問題