簡體   English   中英

在Eclipse插件中導出jar庫

[英]Exporting jar libraries in an Eclipse plugin

我正在研究具有多個組件的Eclipse插件。 以前,這是一個插件,並且一切正常。 但是,我最近將其分為多個插件,它們是單個功能的一部分。

結構是該功能中有一堆插件。 有一個“核心”插件,其中包含通用代碼和庫。 其他所有插件都依賴於核心插件。

問題在於,盡管插件可以很好地編譯,並且沒有關於plugin.xml,清單等的警告,但由於缺少類,插件在運行時無法正常工作。 具體來說,我在核心插件中使用了Google Guava,並且在運行時找不到Guava jar中的類。 還有其他罐子,但這是第一個炸毀的罐子。

我嘗試了幾種方法來解決此問題:

  • 導出核心項目中的Guava jar中包含的軟件包具有相同的結果:不起作用。
  • 將Guava jar放入每個插件都可以,但是由於額外的大小,這是不希望的。
  • 根據我的搜索,我可以在我的plugin.xml中添加一個<runtime>標記,由於我有清單,Eclipse會立即忽略該標記。 我還沒有找到向清單添加等效設置的方法。

實際可行的唯一方法是創建一個庫插件,該插件實質上將所有jar文件解包並合並。 這里的問題是我然后有了隨機文件的混搭。 如果我要升級jar文件,則重新生成該項目很繁瑣,而且我懷疑在搜索SVN歷史記錄以查找該項目時會變得很泥濘。

還有另一種方法可以輕松地刪除更新的jar文件並使它以最小的更改工作嗎?

導出核心項目中的Guava jar中包含的軟件包具有相同的結果:不起作用。

您對此有疑問嗎?

據我所知,在Eclipse Equinox中是OSGi容器,而在OSGi中,我們具有使用其他捆綁軟件資源的功能。

因此,請確保在此處從正確的位置導出正確的內容。

可能其他捆綁軟件無法識別從核心捆綁軟件導出的類(請在此處檢查所有子捆綁軟件中的import-package),或者類加載器中發生了某些錯誤。

嘗試在清單中使用“ Eclipse-Buddy策略”屬性。 它可能會工作:-)

我要做的工作是:

  1. 創建一個Maven項目並將所有依賴項放在此處
  2. 編寫代碼,包括算法以及插件/應用程序的所有邏輯
  3. 生成項目。 您將有一個大的jar文件。 諸如“ myproject-with-dependencies.jar”之類的東西
  4. 在Eclipse中:
    1. 右鍵單擊->現有JAR存檔中的插件。 在此處輸入圖片說明
    2. 從步驟3中選擇您的jar文件。
    3. 檢查您的plugin.xml並僅導出所需的軟件包(以避免在Osgi中使用ClassCastExpeption)
  5. 最后,從您擁有的其他插件中向該插件添加依賴項

筆記:

  • 這是我為了避免p2站點而使用的,也避免了捆綁在一起(特別是因為我使用Tycho來構建Eclipse插件)。
  • 這不是最佳解決方案,但可以節省大量時間。 相信我!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM