2016-05-31 20 views
5

我正在嘗試使用ScriptEngineManagerScriptEngine來執行一些帶有Java的JavaScript代碼。我使用Java 8我在Karaf OSGi下執行此代碼。ScriptEngineManager和ScriptEngine無法在卡拉夫OSGi(Nashorn未找到)中加載

我用一個Java類中的精品工程的例子,但在捆綁包裝它給了我這個錯誤ScriptEngineManager providers.next(): javax.script.ScriptEngineFactory: Provider jdk.nashorn.api.scripting.NashornScriptEngineFactory not found

當我看向包的報頭,我看到一束進口javax.script,包的被調用類,但似乎(nashorn)的提供者沒有找到。

感謝

回答

6

轉到文件等/ 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報告給Karaf社區。

編輯:如果您在測試中使用Pax Exam Container 4.x for Karaf,那麼請不要忘記將org.ops4j.pax.exam.CoreOptions.bootDelegationPackage("jdk.nashorn.*")添加到測試容器的配置中。

0

你需要確保你有一個包或系統實際問題導出這些軟件包:

因此,無論安裝相應的包,或者您需要調整對出口在這種情況下,編輯jre.properties並確保所涉及的軟件包是從系統軟件包中導出的。

相關問題