2009-01-26 88 views
2

由於與外部產品兼容的原因,我需要構建一個RCP應用程序,該應用程序必須包含2個插件版本。這個插件是org.apache.lucene,它在eclipse 3.4中目前是1.9.1。我需要版本1.4.103才能與其他應用程序兼容。我應該說我的RCP應用程序最初是使用eclipse 3.2開發的,升級到3.4後出現了這個問題。Eclipse RCP:創建需要2個不同版本插件的產品的問題

在開發和測試過程中,我的應用程序工作正常。我不得不在運行配置中手動添加1.4.103插件,否則它運行正常。

現在我處於構建產品階段,無法找到在產品嚮導的配置選項卡中添加Lucene插件的2個版本的方法。在運行時,一個錯誤表明缺少Lucene的1.4.103版本。

回答

2

考慮到,在OSGi中,捆綁包沒有捆綁之間直接依賴的概念。
相反,每個捆綁包都列出了它希望由其他捆綁包通過「導入包」和「導入服務」頭註冊的服務和包。

另一方面,軟件包列出了它計劃通過「導出包」和「導出服務」導出的服務和包。因此,bundle實現之間沒有硬性依賴關係。只要某些軟件包提供導入的軟件包,您的軟件包就會很快樂。

作爲例證,WTP(Web工具平臺)has Duplicated javax.wsdl plugins


現在,你應該確保你已經將您3.2插件項目,子菜單中的「PDE工具」(右鍵點擊你的項目)。

然後,您可以定義一個product for your rcp application,其中您將爲運行時定義配置(target),而不是開發目標。

+0

不確定'convert plugin project'是什麼意思。我在PDE工具菜單中看不到轉換操作。 – paul 2009-01-26 10:37:23

+0

當我嘗試配置產品運行時時,我認爲我必須定義要加載的插件的版本,即1.4.103 – paul 2009-01-26 10:39:07

0

如何從其他名稱的源代碼編譯此插件?或者爲較老的插件函數編寫一個包裝來更新?

2

我深入研究了這個問題,涉及捆綁BIRT的產品,並因此繼承了兩個不同版本的javax.wsdl的需求。在閱讀了很多wiki頁面,bugzilla條目等之後,我發現這是PDE(插件開發環境)構建過程中的一個問題。 Eclipse 3.5現在已經糾正了這個問題。 bugzilla的條目是https://bugs.eclipse.org/bugs/show_bug.cgi?id=265438

基本上,Eclipse本身允許您指定兩個版本並正確解析所有內容。但是,PDE Build(使用相同的產品文件)只能提取最新版本的插件。我們針對當前Eclipse 3.4基礎的解決方案是強制性地將額外的插件複製到目標的插件文件夾中。這解決了我們暫時的問題,並且我們將來會遷移到Eclipse 3.5 RCP庫,以挑選上述錯誤修復。