【问题标题】:Running "Graphviz" viz.js from Java 8 Nashorn Engine从 Java 8 Nashorn 引擎运行“Graphviz”viz.js
【发布时间】:2018-11-30 00:43:36
【问题描述】:

我正在尝试从服务器上的 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

到目前为止,这是我的(简单)程序:

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);
    }
  }

}

我错过了什么?或者……真的可以在 Java 8 中运行 Javascript 吗?

【问题讨论】:

    标签: javascript java java-8 graphviz nashorn


    【解决方案1】:

    Nashorn 不支持Promise,你需要实现一个“Pollyfill”来提供Promise 支持。这是一个实现:https://github.com/shendepu/nashorn-polyfill

    【讨论】:

      猜你喜欢
      • 2018-09-19
      • 1970-01-01
      • 1970-01-01
      • 2019-01-22
      • 2017-07-09
      • 1970-01-01
      • 2017-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多