我有一個包,聲明瞭一個激活器。這個激活器創建一個JFrame並顯示它。OSGi上的java.lang.NoClassDefFoundError
在Eclipse上作爲插件項目運行它工作正常。當我穿上費利克斯時,它不再起作用。 它顯示: java.lang.NoClassDefFoundError:COM /格里普/ UI /大型機
但大型機位於同一捆綁的活化劑是,作爲公共類的,當然。我不明白爲什麼類加載器沒有找到類。
任何人都知道發生了什麼?
我有一個包,聲明瞭一個激活器。這個激活器創建一個JFrame並顯示它。OSGi上的java.lang.NoClassDefFoundError
在Eclipse上作爲插件項目運行它工作正常。當我穿上費利克斯時,它不再起作用。 它顯示: java.lang.NoClassDefFoundError:COM /格里普/ UI /大型機
但大型機位於同一捆綁的活化劑是,作爲公共類的,當然。我不明白爲什麼類加載器沒有找到類。
任何人都知道發生了什麼?
確保導入的javax.swing
包放到你的包:
Import-Package: javax.swing
@Neil沒有這是錯誤的,OPhas是osgi配置文件設置爲Bundle-RequiredExecutionEnvironment:J2SE-1.5,這意味着javax。*包應該自動導出system.bundle – 2011-03-03 17:09:35
@Suraj抱歉,不得不公開反對,但只是因爲系統包導出了javax.swing包並不意味着它是由其他包自動導入的。 OSGi中的規則是您必須導入您使用的軟件包,唯一的例外是「java。*」。 – 2011-03-04 05:04:08
@Neil @Neil在寫這樣的東西之前,你是否嘗試過呢?我可以使用javax.swing包而不導入它。你知道「Bundle-RequiredExecutionEnvironment」的概念和配置文件的概念。至少編寫一些代碼並在誤導他人之前檢查自己。 – 2011-03-04 05:17:00
您已聲明維管束類路徑捆綁軟件的MANIFEST.MF
不...但正如我所說的,MainFrame位於相同的激活碼爲 – 2011-03-03 13:39:46
的包中,您不得不提及Bundle-ClassPath。儘管默認情況下它可能會提起「。」但只是確保... – 2011-03-03 13:52:22
hmmmm我發現在日誌中嵌套的excote ... 引起:java.lang.ClassNotFoundException:javax.swing.JFrame 爲什麼我需要聲明? JFrame在java默認庫中。 – 2011-03-03 14:07:00
現在,它的作品!我在配置文件中配置了啓動委派!
我把org.osgi.framework.bootdelegation =放在config.ini中。
你們兩個都應該在男人嘿嘿之前告訴我這件事。現在我在Equinox wiki上讀到,遵循OSGi規範,我需要定義每個需要使用的包,我認爲它是正確的,因爲一些定製的虛擬機可以具有比其他更多的庫。
但是Eclipse不會在導入每個java包的概念(如javax.swing)中工作。我會在Eclipse Bugzilla中報告這一點。
非常感謝你們!
PS:你的書@Neil?
我已經報道了https://bugs.eclipse.org/bugs/show_bug.cgi?id=338924 – 2011-03-04 12:55:35
使用這個VM參數:
-Djava.specification.version=1.6
這將迫使菲利克斯使可用的系統軟件包的默認設置爲Java 6中,其中包括javax.swing
和它的子包
我用了那個時間,但還不夠。謝謝 – 2013-02-17 18:50:03
有一個包裹例外? – 2011-03-03 13:24:29
似乎沒有= [... – 2011-03-03 13:36:03