0

我试图用序列化方法解组一个不是当前包但在公共组件包中的bean。

当骆驼尝试解组我的 bean 时,我收到以下错误:

22:43:11,865 | 错误 | nModule-thread-1 | 默认错误处理程序 | 89 - org.apache.camel.camel-core - 2.8.0.fuse-06-11 | exchangeId 交付失败:ID-ITEM-64684-49962-1354223882336-2-1。交付尝试后用尽:1 捕获:java.lang.ClassNotFoundException: commons.InformationInput java.lang.ClassNotFoundException: commons.InformationInput at 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。

我的包含 bean 的包已正确启动,并且我在包定义的Export-Package中定义了commons

有没有人设法做到这一点?

4

3 回答 3

1

当正在序列化/反序列化类的包事先不知道必须导入哪些包时,有时会发生这种情况。

一种解决方法是使用DynamicImport-Package。例如:

DynamicImport-Package: *

这意味着包可以导入任何包中的类,但要注意成本(请参阅链接文章)。

于 2012-12-03T12:19:55.623 回答
0

这听起来类似于 Hibernate 发出一个 OSGi 环境,由于类加载问题而失败。我会推荐一些分类类好友加载。在包含该类的公共包的清单中添加此

Eclipse-BuddyPolicy:registered

然后在你的依赖伙伴中确保你将它作为一个依赖包添加到它的清单中。

Eclipse-RegisterBuddy:com.nameofmycommonbundle

这应该可以解决您的问题。

这是hibernate参考的参考

于 2012-12-01T16:46:38.833 回答
0

我通过在骆驼核心捆绑包上启用动态导入找到了一种解决方法。这可以在 karaf 控制台上完成:dev:dynamicimport <camel-core-bundle-id>

于 2012-12-03T14:16:42.737 回答