2012-11-29 93 views
0

我想用序列化方法解組一個bean,它不是當前包,但在公共組件包中。駱駝 - unmarshal()。序列化() - ClassNotFoundException

我收到以下錯誤,當駱駝試圖解組我的豆:

22:43:11865 |錯誤| nModule-thread-1 | DefaultErrorHandler | 89 - org.apache.camel.camel-core - 2.8.0.fuse-06-11 |交貨失敗 交貨ID:ID-ITEM-64684-49962-1354223882336-2-1。 後傳遞嘗試耗盡:1抓到: 拋出java.lang.ClassNotFoundException:commons.InformationInput 拋出java.lang.ClassNotFoundException:commons.InformationInput在 java.net.URLClassLoader的$ 1.run(URLClassLoader.java:202):1.6。 0_33] at java.security.AccessController.doPrivileged(Native Method)[:1.6.0_33] at java.net.URLClassLoader.findClass(URLClassLoader.java:190)[:1.6.0_33] at java.lang。 ClassLoader.loadClass(ClassLoader.java:306)[:1.6.0_33] http://stackoverflow.com/questions/6749334/osgi-bundle-access-spring-context-file-from-another-bundle at java.lang .ClassLoader.loadClass(ClassLoader.java:247)[:1.6.0_33] at org.apache.felix.framework .ModuleImpl.doImplicitBootDelegation(ModuleImpl.java:1610) 在 org.apache.felix.framework.ModuleImpl.searchDynamicImports(ModuleImpl.java:1547)

我含豆包是正確啓動和我定義了的共同點包中的包的定義出口包

有沒有人設法做到這樣的事情?

+0

您是否導入捆綁包? – Mirco

+0

哪個捆綁包在哪個捆綁包中? :)我已經從bundle中解析了從unmarshalling定義的駱駝路由中的commons導入包。 – yodamad

+0

你應該改進你的問題。涉及哪些捆綁包?哪個捆綁包做什麼?每個包導入/導出哪些包?嘗試構建一個最簡單的示例,然後將這些信息添加到您的問題中。 –

回答

0

我通過在駱駝核心束上啓用dynamicimport找到了一個workaroud。 這可以在卡拉夫控制檯上完成:dev:dynamicimport <camel-core-bundle-id>

0

這聽起來很類似於Hibernate發佈的OSGi環境,因爲類加載問題而導致它失敗。我會推薦一些歸類班哥加載。在包含您的公共捆綁的清單中的類添加此

Eclipse-BuddyPolicy:registered 

然後在你的哥們依賴確保您有它添加爲一個依賴包,這給它的清單。

Eclipse-RegisterBuddy:com.nameofmycommonbundle 

這應該可以解決您的問題。

這裏是冬眠reference

+0

好友類加載是Equinox的一個特性,它不是標準的OSGi。 (仍然有效,只是想添加該信息) –

+0

我找到了一種解決方法,但我會盡快嘗試此解決方案 – yodamad

1

這有時會發生在被序列化/反序列化類捆事先不知道什麼包必須被導入一個參考。

一種解決方法是使用DynamicImport-Package。例如:

DynamicImport-Package: * 

這就意味着該包可以導入任何包中的類,但要小心費用(請參閱鏈接的文章)。

+0

我試圖將其添加到我的Bundle A(其中駱駝路線被定義),但它不起作用,因爲問題發生在駱駝核心。 – yodamad

+0

它需要位於正在加載類的包中。 –