2011-08-31 42 views
15

我知道還有其他問題針對相同的問題,但問題在於解決方案對我無效。 我有一個小工具,應該讀取我想要的文件並將其打包爲資源,並依賴於其他項目(我使用Eclipse Helios),我喜歡將它們作爲jar而不是單個類。如何正確打包Jar中的資源

由於在Eclipse的應用程序,我可以通過

String path = MyClass.class.getClassLoader().getResource("resources/" + name + ".SOURCE").getPath(); 
System.out.println(path); 
File file = new File(MyClass.class.getClassLoader().getResource("resources/" + name + ".SOURCE").toURI()); 
defaultSource = readSOURCEFile(file); 

訪問我的資源,當且僅當我把資源文件夾要是我把它放在我的src文件的輸出路徑(編譯源)下。

當我打包項目時,根文件夾或類文件夾中的資源根本不打包。如果我的src文件夾中有資源,它將打包在src/resources下。

我使用Export - Runnable Jar,我做錯了什麼? 如果我嘗試使用Export-Jar,我可以正確打包我的源代碼和資源,但是我在設置主類時遇到問題,無法執行jar。清單是正確的,並且類是在那裏:-(

第二個問題:在打包的jar中,我得到錯誤:URI不是分層的(在我手動移動jar內的資源後,我可以執行該jar)

提前感謝!

我已經鏈接的來源到工作區是一個問題?

回答

14

馬克項目的根文件夾下的resource文件夾作爲Eclipse的一個「源文件夾」(右鍵點擊文件夾,轉到「Build Path」>「用作源文件夾」),然後閱讀這樣的資源:

InputStream is = MyClass.class.getClassLoader().getResourceAsStream(name + ".SOURCE"); 
BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
String line = reader.readLine(); 
+0

如果我這樣做,資源打包時不需要直接在根文件夾下的文件夾資源。 – UMY

+0

你說得對。我相應地更改了代碼以從資源路徑中刪除「資源」。如果你想在你的jar中有一個名爲'resources'的目錄,那麼創建這個文件夾層次結構:'/resources/resources',並且添加'/resources'到上面提到的Eclipse源路徑。還要在代碼的資源路徑中添加'resources'。 –

+0

這是一件很簡單的事情,但沒有SO和你驚人的答案,我會在這麼多個小時內摸索...... ***謝謝!!!! *** –