导入包而不编辑org.restlet中的清单文件

时间:2011-12-08 15:49:15

标签: osgi manifest restlet

我使用Restlet进行客户端(JSE2)和服务器(GAE)之间的通信。

客户端基于OSGi。

我有一个包含我的资源接口的共享包和一个包含将资源包装到ClientResource的代码的包。但是org.restlet包不会导入任何这些包。我认为它不是编辑org.restlet包的清单并手动导入共享包的正确解决方案。这也是一个非常静态的解决方案。

有没有更好的方法来导入这些接口,所以我可以将它们包装到Restlet ClientResource中?

这是我正在处理的例外情况:

java.lang.ClassNotFoundException: *** Class 'crm.resources.server.restlet.ContactResource' was not found because bundle org.restlet [3] does not import 'crm.resources.server.restlet' even though bundle crm.shared.resources.server [4] does export it. To resolve this issue, add an import for 'crm.resources.server.restlet' to bundle org.restlet [3]. ***

更新:编辑清单无用,因为共享包使用了org.restlet包中的一些导入。因此,当您尝试启动org.restlet包时,将缺少共享包中导入的包。如果您首先启动共享捆绑包,他会错过org.restlet中的包。 (我希望我能清楚地解释一下)

1 个答案:

答案 0 :(得分:1)

我理解你的问题。 我想出的最好的解决方案是在org.restlet MANIFEST-File(2.1.2到目前为止)中添加“DynamicImport-Bundle:*”。 至少,这会阻止您进入循环依赖关系,并且在您更改重定向应用程序后不会强制您手动调整导入。

另请参阅:https://github.com/restlet/restlet-framework-java/issues/6

祝你好运, 西蒙