2014-05-14 84 views
3

我已閱讀Nashorn支持一些選項,但似乎all of them are undocumented如何爲單引擎實例設置java-8 Nashorn javascript引擎選項

它們可以通過設置系統屬性來使用,但它們是全局的。我想以編程方式爲單個引擎實例設置它們。

Here you can read可以指定選項就是我想要的但類是內部的,所以我得到這樣那樣的錯誤:

"Access restriction: The type NashornScriptEngineFactory is not accessible due to restriction on required library C:\Program Files\Java\jdk1.8.0\jre\lib\ext\nashorn.jar". 

我不能找到一種方法來設置與Java腳本這些選項API。

編輯:

看來,問題就是Eclipse保護我使用內部類和不完全使用犀牛一個問題,但我將混凝土中的問題。

有沒有一種方法可以設置單個nashorn引擎實例的選項,而不使用不屬於javax.script API的nashorn類?

+1

你能不能給你想要的選項或選項的例子改變,以便我們可以使討論更具體? –

+0

對我來說,最想要的選擇是'--no-java' – aalku

+0

當我看到它出現時,我正要複製Mike Clark的答案。它工作嗎? java -version輸出了什麼? –

回答

3

下面的程序成功運行對我來說:

import javax.script.*; 
import jdk.nashorn.api.scripting.*; 
public class NashTest { 
    public static void main(String[] args) throws ScriptException { 
     NashornScriptEngineFactory factory = new NashornScriptEngineFactory(); 
     ScriptEngine engine = 
      factory.getScriptEngine(new String[] { "--global-per-engine" }); 
     engine.eval("java.lang.System.out.println('hello world!')"); 
    } 
} 

確保您使用的JRE/JDK的發佈版本8

+1

它適用於maven/javac,但不適用於eclipse(使用相同的JDK進行配置,這兩種情況都是最新版本)。在eclipse中,我得到了這個錯誤:訪問限制:由於所需庫C:\ Program Files \ Java \ jdk1.8.0_05 \ jre \ lib \ ext \ nashorn.jar的限制,無法訪問NashornScriptEngineFactory類型。 – aalku