Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从OSGI命令提示符运行OSGI捆绑包:导入包缺少约束_Java_Eclipse_Jar_Osgi_Osgi Bundle - Fatal编程技术网

Java 从OSGI命令提示符运行OSGI捆绑包:导入包缺少约束

Java 从OSGI命令提示符运行OSGI捆绑包:导入包缺少约束,java,eclipse,jar,osgi,osgi-bundle,Java,Eclipse,Jar,Osgi,Osgi Bundle,我有一个包含以下mainfest的包: 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 Impo

我有一个包含以下mainfest的包:

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"
搜索之后

我发现问题出在清单文件上。在我的设置中导出JAR时,我说使用文件夹中已有的清单文件

我从未看过路径指向什么(假设eclipse会正确设置它),但是eclipse没有更改它的位置,所以两个JAR都使用相同的清单文件


吸取的教训。在盲目按finish之前,请务必检查表单。

您将这两个捆绑包作为
jar
导出是什么意思?一个
jar
,一个bundle.@chrylis我已经尝试将它们作为一个bundle和两个单独的bundle一起导出请从“two-
jar
”bundle中发布您的清单。(通过从zip文件而不是Eclipse中复制。)@chrylis如何从
jar
文件中获取maifest?第二个包有一些非常可疑的地方。为什么OSGi报告它为“已解决”,但不知道它的名称?我认为JAR文件可能已损坏或清单无效。听起来您正在以非常手动且容易出错的方式构建包。为什么不考虑使用合适的工具,如bnd和Bndtools?