2009-06-26 104 views
0

我的Eclipse插件有一個嚴重的問題..Eclipse插件 - 在運行時使用了錯誤的jar

我的插件依賴於另外兩個插件。所有這些插件(包括我的插件)都使用Mozilla Rhino引擎 - 其中兩個使用js.jar(版本1.4)。但我的插件使用了新版本,該版本尚未發佈,並且包裝在MyRhino.jar

在發展,一切順利 - 代碼完成提供從我的犀牛的特殊版本,我的類和方法,沒有錯誤等

但是當我跑我的插件,不同版本的犀牛是用來和我運行時異常,如ClassNotFoundException等。

我該如何告訴eclipse在運行時和開發時使用相同的jar?

當我在NetBeans上開發插件時,解決方案很簡單 - 將jar包裝在一個單獨的模塊中,設置要導出的包並聲明對這個新模塊的依賴關係.. 我在Eclipse中發現了相似的解決方案,不適合我 - 儘管我聲明瞭對包裝器插件的依賴關係,但即使在開發時,包和類也不可用。

我已經花了幾個小時與這個問題,並沒有解決它,所以幫助表示讚賞。感謝大家。

回答

1

最後,我已經解決了吧..

很簡單,以創建由現有的罐子包裝插件形式eclipse中的新項目嚮導..但問題在於嚮導不包括bundle classpath中的jar(如我所料)。 Prety讓人困惑(至少對我來說)嚮導只爲你做了一半的工作:/

在包裝器插件包類路徑中插入jar之後,everytning工作。所有的

彼得感謝您answear反正:)

+0

很高興聽到你解決了它。 – 2009-06-29 10:38:47

3

確保您的依賴關係是正確的。如果你的代碼依賴於新版本的庫,那麼你需要在你的MANIFEST.MF中指明。例如。如果您需要捆綁org.mozilla.rhino,指定最低版本,你需要:

Require-Bundle: org.mozilla.rhino;bundle-version="1.5.0" 

你MyRhino.jar需要指定正確的版本(例如1.5.0),儘管它尚未發佈:

Bundle-Version: 1.5.0.qualifier 

(如果MyRhino.jar不會轉換爲尚未插件,您需要手動執行:你可以使用Eclipse中現有的JAR只是新的瞭解創建插件項目)

Alternativaly,你可以用MyRhino.jar插入你的插件,並刪除其他插件的依賴關係。爲此,請使用Bundle-ClassPath(有關詳細信息,請參見http://www.aqute.biz/Blog/2007-02-19)。如果你把你的MyRhino.jar直接進入你的插件,然後捆類路徑應該是:

Bundle-ClassPath: .,MyRhino.jar 
+0

它看起來像我想的東西。首先我用你所描述的另一種方式。它不適合我(正如我寫的那樣)。 所以現在我已經從我現有的jar中創建了一個插件並聲明瞭這個插件的依賴。我也從Bundle-ClassPath中刪除了條目。然後我刷新了項目並更新了類路徑。現在我可以在我的類中看到很多導入錯誤 - 我的插件項目中看不到來自jar-wrapped插件的類。我在做什麼? – 2009-06-29 08:27:08