2014-02-16 64 views
3

我想在Eclipse插件中包含一些與二進制不相關的文件,所以我可以稍後在插件的Java代碼中訪問它們。在Eclipse插件中包含並訪問二進制文件(非Java)

1) 據我瞭解,我可以構建配置的「建立/二進制構建」一節中添加一些文件和文件夾,包括在構建:

enter image description here

不幸的是,文件夾「包含文件夾」,並且下面的所有文件都不會在構建插件後被複制到「bin」文件夾(或任何其他地方)。我誤解了這個對話嗎?我一直認爲「bin」文件夾是構建項目/插件的「根」。在構建中包含二進制文件的正確方法是什麼? 2)如果我設法將我的文件包含在構建的插件中,我如何確定它們的路徑,以便我可以在插件的某個Java類中打開並使用它們?

+0

你是如何構建插件的?你檢查的所有東西都應該包含在jar的頂層。你也沒有選擇plugin.xml - 這是一個重要的文件。 –

+0

@ greg-449我使用內置的「構建項目」功能,將所有Java文件編譯爲.class文件,並將它們與一些插件元數據一起復制到bin文件夾(這是它的樣子)。 – muffel

回答

3

您在構建中檢查的所有內容都應該包含在頂層的插件jar中(專門處理bin目錄)。

爲了找到在一個插件使用的對象:

URL url = FileLocator.find(bundle, new Path(path), null); 

其中path是在插件的相對路徑和bundle是插件Bundle。你可以從BundleContext傳遞給Bundle插件激活或使用Platform.getBundle("plugin id")

的URL從這個返回將使用bundle方案,將其轉換爲一個file URL使用:

URL fileURL = FileLocator.toFileURL(url); 

返回的文件URL可能位於臨時位置。

更新:當您使用Eclipse運行插件(使用Run/Eclipse應用程序)時,則不會構建任何jar,並且文件夾不會被複制到任何位置。您仍然使用FileLocator API訪問文件夾,路徑相同。

+0

謝謝你的回答。不幸的是,如果我構建或運行/調試我的插件,根本不會構建任何jar。我是否必須將我的插件綁定到JAR中才能複製文件? Afaik我不必從我的插件構建一個jar來使用它 - 就像它在運行/調試時不會構建它一樣。 – muffel

+0

更新了答案,詳細說明了在Eclipse中進行測試期間的運行情況 –

相關問題