【问题标题】:How to set java-8 Nashorn javascript engine options for a single engine instance如何为单个引擎实例设置 java-8 Nashorn javascript 引擎选项
【发布时间】:2014-05-14 16:38:10
【问题描述】:

我读到 Nashorn 支持一些选项,但似乎 all of them are undocumented

它们可以通过设置系统属性来使用,但它们是全局的。我想以编程方式为单个引擎实例设置它们。

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 类的情况下设置单个 nashorn 引擎实例的选项?

【问题讨论】:

  • 您能否举例说明您希望更改的一个或多个选项,以便我们进行更具体的讨论?
  • 我最想要的选项是--no-java
  • 当我看到它出现时,我正要复制 Mike Clark 的答案。它有效吗? java -version 输出什么?
  • 我通常不想说负面的,但我们已经在我所在的 Nashorn 做了很多工作,我发现总的来说它的文档记录很差(那里的文档通常是零碎的或令人困惑)和令人沮丧的,奇怪的实施。这是我用过的最有问题的 java 包。

标签: java javascript java-8 nashorn


【解决方案1】:

以下程序为我成功运行:

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 的已发布版本。

【讨论】:

  • 它适用于maven/javac,但不适用于eclipse(配置相同的JDK,两种情况下都是最新的)。在eclipse中我得到这个错误Access restriction: The type NashornScriptEngineFactory is not accessible due to restriction on required library C:\Program Files\Java\jdk1.8.0_05\jre\lib\ext\nashorn.jar
猜你喜欢
  • 2019-01-22
  • 2018-09-19
  • 2017-07-09
  • 2018-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-14
相关资源
最近更新 更多