我已經打破我的頭在這個相當長的一段時間了,並不能找到這個問題的解決方案:文件和bundleresource://網址
我有一個使用打包成一個自定義庫的Eclipse RCP應用程序罐。從插件中,我正在調用jar中的一個方法。 在此方法中,我使用this.class.getResource(relPath)
「獲取」資源,而relPath
是我需要的文件的硬編碼相對路徑。這返回我URL
,我可以用它來構建一個File
。
現在,如果我不是從插件調用此方法,而是從簡單的Java程序調用此方法,則此功能完美。 區別:Eclipse RCP的類加載程序返回URL
協議bundleresource://
,File
不支持協議,但是當運行簡單的Java程序時,會返回一個file://
-URL,這對構造File
來說是完全正常的。
我意識到Eclipse SDK的FileLocator
-class(它將bundleresource-URL解析爲文件URL),但我不能在庫中使用它,因爲我不想將它綁定到Eclipse RCP平臺 - 它應該可以從非Eclipse-RCP源使用這個庫。
任何關於如何從相對路徑加載此資源的任何想法,可以在從Eclipse RCP-Plugin或任何其他客戶端調用方法時使用這種方式?
我需要在這個相對路徑的目錄上構建一個File
來搜索其中的文件。我完全被卡住這個...
UPDATE:如果有比使用File#list()取得目錄內容,這將幫助已經等我一個可能性..
不勝感激任何提示,
你能列出相關的代碼? – 2012-01-28 11:35:49
@TonnyMadsen嗯,我可以但基本上非常簡單:我使用this.getClass()。getResource(relPath)在我的classPath中加載路徑。這會在Eclipse RCP下完成時返回一個bundleresource:// URL,否則返回file:// URL。 嘗試創建文件對象失敗,因爲文件不支持此協議,因此bundleresource:// URL。 由於我需要閱讀「relPath」的目錄內容,我不得不使用文件... – quaylar 2012-01-30 07:34:19
如何將URL轉換爲文件? – 2012-01-30 07:42:52