首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >费利克斯不喜欢javax.script

费利克斯不喜欢javax.script
EN

Stack Overflow用户
提问于 2010-11-17 06:48:01
回答 2查看 1.1K关注 0票数 2

我正在使用javax.script包编写一个OSGI bundle,在让Felix正确加载该包时遇到了一些问题。在尝试启动捆绑包时,我得到了:

为org.plugin.script.plugin启动包失败-脚本2: org.osgi.framework.BundleException:包2中的未解析约束: package;(package=javax.script)

我认为当我们试图引用一个没有正确加载到包中的包时,就会发生这种情况。我相当确定这是因为javax.script是从1.6版本开始才捆绑到JDK中的,而出于某种原因,它是使用其他东西构建的。到目前为止,我已经:

a.在我的Maven POM中为Felix设置必要的导入,方法是:

代码语言:javascript
复制
<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

代码语言:javascript
复制
<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我对这个不太确定,但我想我会试一试。

代码语言:javascript
复制
org.osgi.framework.system.packages=org.osgi.framework; version=1.3.0, \
    [lots of stuff in between]
    javax.script; \
    version="1.6.0"

仍然是nadda tho。我还错过了什么?

EN

回答 2

Stack Overflow用户

发布于 2010-11-17 17:35:54

代码语言:javascript
复制
<Import-Package>!*,javax.script,org.osgi.framework;version="1.3.0",javax.naming,javax.naming.spi</Import-Package>

通常,您希望让bnd导入捆绑包所需的所有内容。在这里,您告诉它不要导入任何内容(即"!*")。在这里,顺序很重要。由于*匹配任何内容,因此您的包不会导入任何内容。尝试完全删除Import-Package (这将默认导入所有内容),看看会发生什么。

票数 2
EN

Stack Overflow用户

发布于 2010-11-17 07:28:33

我会检查以确保某个包正在导出该包。我认为你可以根据你的环境(Felix,Equinox等)使用像"headers“这样的命令。如果您实际上是从某个地方导出它,那么我会尝试将其缩小到一个特定的版本。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4199847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档