在寻找解析JavaScript的Java/JDK API(包括Nashorn扩展)时,我偶然发现了这个代码片段,内联注释指出需要JDK 9才能运行。是否有可靠的方法在当前或计划中的JDK 8版本上实现相同的功能?
在寻找解析JavaScript的Java/JDK API(包括Nashorn扩展)时,我偶然发现了这个代码片段,内联注释指出需要JDK 9才能运行。是否有可靠的方法在当前或计划中的JDK 8版本上实现相同的功能?
虽然你可以通过Nashorn的JavaScript来使用解析器,但是通过JAVA API在Java中使用它会更好。
import jdk.nashorn.api.scripting.ScriptUtils;
import jdk.nashorn.internal.runtime.Context;
import jdk.nashorn.internal.runtime.ECMAException;
import jdk.nashorn.internal.runtime.ErrorManager;
import jdk.nashorn.internal.runtime.options.Options;
// set up the environment
Options options = new Options("nashorn");
options.set("anon.functions", true);
options.set("parse.only", true);
options.set("scripting", true);
ErrorManager errors = new ErrorManager();
Context contextm = new Context(options, errors, Thread.currentThread().getContextClassLoader());
Context.setGlobal(contextm.createGlobal());
// then for each bit of parsing
String parseTree = ScriptUtils.parse(some_code_string, "nashorn", false);
ScriptEngine
使用Nashorn了。最终,我创建了一个小的js
文件,在Nashorn内部使用解析器。 - Ashley Frieze