我有一个包含以下主要节目的包:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: HelloCamera
Bundle-SymbolicName: HelloCamera
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: hellocamera.Activator
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Import-Package: cameraservice, cameraserviceimpl, org.osgi.framework
Layout:
HelloCamera
-> hellocamera
-> Activator.java
带有此清单的第二个捆绑包:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: CameraService
Bundle-SymbolicName: CameraService
Bundle-Version: 1.0.0.qualifier
Bundle-Localization: plugin
Export-Package: cameraservice, cameraserviceimpl
Import-Package: org.osgi.framework
Bundle-Activator: cameraserviceimpl.Activator
Layout:
CameraService
-> cameraservice
-> CameraService.java
-> cameraserviceimpl
-> Activator.java
-> CameraServiceImpl.java
我可以从Eclipse运行第一个包,一切都按预期正常工作。然后,我将这两个捆绑包分别导出为CameraService.jar
和HelloCamera.jar
我打开了我的OSGI控制台java -jar equinox.jar -console
和
osgi> install file:CameraService.jar
osgi> install file:HelloCamera.jar
osgi> ss
id State Bundle
17 INSTALLED HelloCamera_1.0.0.qualifier
18 RESOLVED unknown_0.0.0 [18]
然后我得到
The Bundle could not be resolved. Reason: Missing Constraint: Import-Package: cameraservice; version="0.0.0"
答案 0 :(得分:1)
搜索后,
我发现问题出在清单文件中。在我的设置中导出jar时,我说使用文件夹中已有的清单文件。
我从来没有看过路径指向的东西(假设eclipse会正确设置它),但是Eclipse没有改变它的位置,因此两个jar都使用相同的Manifest文件。
经验教训。在盲目按下完成之前,请务必检查表格。