Eclipse OSGI 未满足约束

Eclipse OSGI unsatisfied constraint

我在 Eclipse 中有一个基本的 OSGI 项目。当我创建一个 class Activator 并导入 BundleActivator 时,Eclipse 更改了 MANIFEST.MF 添加了这些行:

Export-Package: my.package.name;uses:="org.osgi.framework";version="0.0.1.SNAPSHOT"
Import-Package: org.osgi.framework;version="[1.8,2)"

现在Eclipse("problems view")提示这个错误信息:

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 bundle 插件查看您依赖的包的清单以确定包版本。

它发现您使用包 org.osgi.framework 并且 felix framework 5.0.0 导出此包的版本为 1.8.0。所以它创建了一个从这个版本开始的导入范围,直到排除下一个主要版本。

所以你的清单看起来不错。你不能从 eclipse 运行 的原因可能是你在那里使用了一个较低的 OSGi 框架版本,它不提供上述包的 1.8.0 版本。尝试 运行 使用 felix 框架 5.0.0.