Eclipse OSGI不满意约束
我在Eclipse中有一个基本的OSGI项目。当我创建了一个类活化剂和导入的BundleActivator的是,Eclipse改变了MANIFEST.MF添加这些行:Eclipse OSGI不满意约束
Export-Package: my.package.name;uses:="org.osgi.framework";version="0.0.1.SNAPSHOT"
Import-Package: org.osgi.framework;version="[1.8,2)"
现在的Eclipse(“问题查看”)提示此错误消息:
Unsatisfied constraint: 'Import-Package: org.osgi.framework; version="[1.8.0,2.0.0)"' Plug-in Problem MANIFEST.MF
我有导入最新的Apache Felix运行时,并且可以找到它作为Maven依赖项,但是这并不能解决从Eclipse内运行时的问题。
我需要改变以解决依赖性问题?为什么它打印版本1.8.0,2.0.0?
更新的pom.xml的
插件部分:
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.3.7</version>
<configuration>
<manifestLocation>src/main/resources/META-INF</manifestLocation>
<rebuildBundle>true</rebuildBundle>
<instructions>
<Bundle-Activator>my.package.name.Activator</Bundle-Activator>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Bundle-RequiredExecutionEnvironment>JavaSE-1.7</Bundle-RequiredExecutionEnvironment>
</instructions>
</configuration>
<!-- EXECUTION -->
<extensions>true</extensions>
<executions>
<execution>
<id>set_failok</id>
<goals>
<goal>manifest</goal>
</goals>
<configuration>
<instructions>
<_failok>true</_failok>
</instructions>
</configuration>
</execution>
</executions>
</plugin>
依赖pom.xml中的一部分(进口效果很好):
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.framework</artifactId>
<version>5.0.0</version>
</dependency>
Maven的捆绑插件看起来成您依赖于确定软件包版本的软件包的清单。
它发现您使用软件包org.osgi.framework,并且felix framework 5.0.0将该软件包与1.8.0版导出。所以它会创建一个从此版本的导入范围,直到排除下一个主要版本。
所以你的Manifest看起来不错。你无法从eclipse运行的原因可能是你在那里使用了一个较低的OSGi框架版本,它没有提供上述软件包的1.8.0版本。尝试使用felix框架5.0.0运行。
的确,在将Felix降级到4.0.0之后,导入变为(1.6,2)和它可以工作,非常感谢! – Stefan
更好的是,不要针对特定的OSGi Framework实现(如Felix)进行编译,而是使用OSGi规范JARS之一('osgi.core-
你能告诉我们你的'pom.xml'吗?你怎么试图使用OSGi? '[1.8.0,2.0.0]'表示“任何版本从1.8.0(含)到2.0.0(独占)。这就是OSGi版本控制的工作原理。 –
奇怪,我没有eclipse改变清单.mf当添加激活器时... – flafoux
我用右键单击“配置” - >“转换为OSGI Bundle”,之后设置项目构面“Osgi Bundle”并自动更改清单文件 – Stefan