gpt4 book ai didi

javascript - 从 Java 8 Nashorn 引擎运行 "Graphviz"viz.js

转载 作者:行者123 更新时间:2023-11-30 14:32:30 26 4
gpt4 key购买 nike

我试图在服务器上从 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?

最佳答案

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

关于javascript - 从 Java 8 Nashorn 引擎运行 "Graphviz"viz.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50955727/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com