2010-10-25 102 views
2

我們正在開發一個Eclipse插件,該插件被拆分爲多個Eclipse項目。我們想要導出一些在這些外部項目中定義的類(通過MANIFEST.MF中的Export-Package)。問題在於Eclipse提供了一個錯誤「Package xxx在此插件中不存在」。Eclipse PDE:此插件中不存在包

舉一個例子,假設插件是項目P1,並且這個插件使用了在單獨的Eclipse項目P2中定義的一些類。我們希望將P2與P1捆綁在一起,並通過P1的MANIFEST.MF導出一些P2的類。

這適用於如果我生成一個jar文件(P2.jar)並將其添加到P1的構建路徑中,但它不起作用,如果我只是將P2添加爲P1的依賴項。

任何建議「包xxx在此插件中不存在」是什麼原因?

任何建議如何擺脫它?

回答

0

將項目P2添加爲P2的依賴項,只需將P2的構建類(假設P2是Java項目)添加到P1的類路徑中即可。這將允許P1進行編譯,但在運行時會導致錯誤的行爲。

因爲您的項目P1是一個插件項目,所以必須通過清單編輯器的依賴關係選項卡或通過您提到的包含的jar文件來添加其所有依賴項。

所以唯一的解決方案是將P2項目轉換爲插件項目,然後讓你的P1插件依賴它。這種只輸出代碼但不貢獻任何東西的插件通常被稱爲庫插件。現在越來越多的java庫也以這種方式交付,讓客戶在Eclipse上下文中使用它們(例如log4j)。

+0

感謝您的回答。但是,我不明白爲什麼要將P2類添加到P1的類中會導致運行時錯誤的行爲。目前在我們的構建過程中(我們使用MAVEN),P2是P1的MAVEN依賴。 MAVEN所做的是產生一個P2的JAR並將其與P1的類捆綁在一起。這在運行時運行良好,但在Eclipse中調試P1非常困難(您需要在每次編輯P2後執行mvn部署)。 – Oppy 2010-10-26 07:12:04

+0

如果通過Manifest編輯器運行時的選項卡將P2類捆綁到添加到P1 classpath的Jar文件中,則沒有問題。問題是在項目中右鍵單擊P1依賴關係手動添加P2項目,然後使用屬性 - > Java構建路徑 - > Project.Can檢查P1的Manifest運行時選項卡,並檢查p2.jar是否存在? – 2010-10-26 08:27:01

+0

MANIFEST我手動生成,它包含在Bundle-ClassPath p2.jar – Oppy 2010-10-26 11:06:27