Karaf OSGi 中无法加载 ScriptEngineManager 和 ScriptEngine(未找到 Nashorn)

2024-03-06

我正在尝试使用ScriptEngineManager and ScriptEngine使用 Java 执行一些 JavaScript 代码。我使用 Java 8 在 Karaf OSGi 下执行此代码。

我使用的示例在示例 Java 类中运行良好,但将其打包在捆绑包中会出现此错误ScriptEngineManager providers.next(): javax.script.ScriptEngineFactory: Provider jdk.nashorn.api.scripting.NashornScriptEngineFactory not found

当我查看捆绑包的标头时,我看到捆绑包导入了javax.script,被调用类的包,但似乎(nashorn)找不到提供者。

Thanks


转到文件等/config.properties(位于 Karaf 安装内部),找到配置属性org.osgi.framework.bootdelegation并将 jdk.nashorn.* 添加到其中。完整的配置将是这样的:

org.osgi.framework.bootdelegation=org.apache.karaf.jaas.boot,org.apache.karaf.jaas.boot.principal,sun.*,com.sun.*,javax.transaction,javax.transaction.*,javax.xml.crypto,javax.xml.crypto.*,org.apache.xerces.jaxp.datatype,org.apache.xerces.stax,org.apache.xerces.parsers,org.apache.xerces.jaxp,org.apache.xerces.jaxp.validation,org.apache.xerces.dom,sun.*,jdk.nashorn.*

Bug https://issues.apache.org/jira/browse/KARAF-4603报告给 Karaf 社区。

Edit:如果您在测试中使用 Pax Exam Container 4.x for Karaf,请不要忘记添加org.ops4j.pax.exam.CoreOptions.bootDelegationPackage("jdk.nashorn.*")到您的测试容器的配置。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Karaf OSGi 中无法加载 ScriptEngineManager 和 ScriptEngine(未找到 Nashorn) 的相关文章

随机推荐