Я пишу комплект OSGI, используя пакет javax.script, и у меня есть некоторые проблемы с получением Felix для правильной загрузки пакета. При попытке запустить пакет я получаю:Felix не нравится javax.script
Не удалось запустить пуск для org.plugin.script.plugin-scripter [2]: org.osgi.framework.BundleException: неразрешенное ограничение в пакете 2: пакет; (package = javax.script)
, который, я думаю, происходит, когда мы пытаемся ссылаться на пакет, который неправильно загружен в комплект. Я вполне уверен, что это связано с тем, что javax.script поставляется только в JDK, начиная с 1.6, и по какой-то причине Maven строит что-то другое. До сих пор я:
a. Установите необходимый импорт в моем Maven POM для Felix по:
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Export-Package>org.plugin.script</Export-Package>
<Private-Package>org.plugin.script.*</Private-Package>
<Bundle-Activator>org.plugin.script.ScripterPlugin</Bundle-Activator>
<Import-Package>!*,javax.script,org.osgi.framework;version="1.3.0",javax.naming,javax.naming.spi</Import-Package>
<Embed-Dependency>!org.apache.felix*;scope=compile|runtime;inline=false</Embed-Dependency>
<Embed-Transitive>true</Embed-Transitive>
<Embed-Directory>dependency</Embed-Directory>
<Embed-StripGroup>true</Embed-StripGroup>
<_failok>true</_failok>
</instructions>
</configuration>
</plugin>
b. Установите компилятор Maven в 1.6, так как это самое раннее мы получаем javax.script
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
c. Даже не уверен, что это имеет значение, но я установил свойства рамки Felix (в их config.properties) на 1.6.0 и включил экспорт javax.script. TBH Я не уверен в этом, но решил, что я сделаю снимок.
org.osgi.framework.system.packages=org.osgi.framework; version=1.3.0, \
[lots of stuff in between]
javax.script; \
version="1.6.0"
Still nadda tho. Что еще я пропустил?
Просто случайный намек - похоже, что ошибка возникает при попытке загрузить пакет, так что вы проверили, что ваша платформа * выполнения * является Java 1.6? –
@Stephen Спасибо за подсказку, но это было первое подозрение. Я фактически удалил все версии, кроме 1.6, поэтому я не думаю, что это так. – Michael
А новые разработки. В манифесте сообщается, что пакет javax.script был в Export-Package (в рамках использования :) и Import-Package, но * также * в Ignore-Package, который является странным, потому что я никогда не устанавливал его как таковой. – Michael