我在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>
你能告訴我們你的'pom.xml'嗎?你怎麼試圖使用OSGi? '[1.8.0,2.0.0]'表示「任何版本從1.8.0(含)到2.0.0(獨佔)。這就是OSGi版本控制的工作原理。 –
奇怪,我沒有eclipse改變清單.mf當添加激活器時... – flafoux
我用右鍵單擊「配置」 - >「轉換爲OSGI Bundle」,之後設置項目構面「Osgi Bundle」並自動更改清單文件 – Stefan