Ali*_*oud 5 javascript java osgi scriptengine apache-karaf
我正在尝试使用Java ScriptEngineManager并ScriptEngine使用Java执行一些JavaScript代码.我使用Java 8我在Karaf OSGi下执行此代码.
我使用的示例在示例Java类中工作正常,但将其打包在一个包中会给我这个错误 ScriptEngineManager providers.next(): javax.script.ScriptEngineFactory: Provider jdk.nashorn.api.scripting.NashornScriptEngineFactory not found
当我查看bundle的头文件时,我看到bundle导入javax.script,了被调用类的包,但似乎找不到(nashorn)提供者.
谢谢
转到文件等/ 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.*
Run Code Online (Sandbox Code Playgroud)
Bug报告给Karaf社区.
编辑:如果您在测试中使用Pax Exam Container 4.x for Karaf,那么不要忘记添加org.ops4j.pax.exam.CoreOptions.bootDelegationPackage("jdk.nashorn.*")到测试容器的配置中.