2012-11-29 56 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

它需要位于正在加载类的包中。 –