Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “运行”;Graphviz“;来自Java8Nashorn引擎的viz.js_Javascript_Java_Java 8_Graphviz_Nashorn - Fatal编程技术网

Javascript “运行”;Graphviz“;来自Java8Nashorn引擎的viz.js

Javascript “运行”;Graphviz“;来自Java8Nashorn引擎的viz.js,javascript,java,java-8,graphviz,nashorn,Javascript,Java,Java 8,Graphviz,Nashorn,我试图在服务器上从Java 8(Nashorn引擎)渲染graphviz,但出现错误: Exception in thread "main" javax.script.ScriptException: ReferenceError: "Promise" is not defined in <eval> at line number 120 at jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptExcepti

我试图在服务器上从Java 8(Nashorn引擎)渲染graphviz,但出现错误:

Exception in thread "main" javax.script.ScriptException: ReferenceError: "Promise" is not defined in <eval> at line number 120
    at jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:455)
    at jdk.nashorn.api.scripting.NashornScriptEngine.invokeImpl(NashornScriptEngine.java:387)
    at jdk.nashorn.api.scripting.NashornScriptEngine.invokeMethod(NashornScriptEngine.java:196)
    at test1.VizDemo.main(VizDemo.java:24)
Caused by: <eval>:120 ReferenceError: "Promise" is not defined

我错过了什么?或实际上可以在Java 8中运行Javascript吗?

Nashorn不支持
Promise
,您需要实现一个“Pollyfill”来提供
Promise
支持。下面是一个实现:

import java.io.InputStreamReader;

import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

public class VizDemo {

  public static void main(String args[]) throws Exception {

    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine engine = manager.getEngineByName("JavaScript");

    engine.eval(new InputStreamReader(VizDemo.class.getResourceAsStream(
      "./viz.js")));
    engine.eval(new InputStreamReader(VizDemo.class.getResourceAsStream(
      "./full.render.js")));

    Object v = engine.eval("new Viz();");
    System.out.println("v=" + v);

    if (engine instanceof Invocable) {
      Invocable invEngine = (Invocable) engine;
      Object result = invEngine.invokeMethod(v, "renderSVGElement",
          "digraph { a -> b; a -> c; }");
      System.out.println("result=" + result);
    }
  }

}