我試圖使用部署耳朵與webapp,使用osgi包並導出一些類。這是在一個應用服務器。 該bundle導出從類B派生的類A. ClassB實際上是該包已決定提供的第三方開源類。問題是我的耳朵在耳朵的lib目錄中還有另一個classB版本。osgi包導出類,但仍然在類路徑被拾起
在嘗試部署應用程序時,出現了一個奇怪的錯誤,類A是從osgi bundle jar中加載的,但是因爲classB是從ear的lib目錄加載的,而不是從osgi bundle加載,即使它在那裏。
這是由於classA期望某些行爲存在於其基類中而導致的錯誤,但實際上並不存在,因爲classB是在bundle外部加載的。
我不知道如何解決這個問題 - 這是我第一次遇到osgi,我有點擔心這可能比classpath地獄更糟,特別是對於需要與osgi部分集成的應用程序以及部分它不是。
哇,這很快!謝謝。我沒有選擇 - 這個東西試圖嫁給appserver,我們必須使用一個大框架thingie和osgi。我只是想了解osgi如何與常規類路徑一起工作。 – treefrog 2011-03-29 22:58:28
我不認爲我明白osgi運行時是如何在耳內開始的......這是felix – treefrog 2011-03-29 23:00:04
我無法回答你的問題的部分...你的問題是表明你試圖在web應用程序內運行OSGi。 ..你必須在那裏啓動OSGi或使用一個庫。 OSGi從基礎JVM的頂層開始,從類路徑的角度來看非常理智。基本的Java SE類型從JVM升級到OSGi包,但這是安全的,因爲沒有人足夠瘋狂從它們的包中重新導出標準Java SE類型。 – 2011-03-29 23:05:55