【发布时间】:2018-02-21 17:23:43
【问题描述】:
this article 声称,Java 9 现在包括 ECMAScript 6 支持。但是,它没有解释如何使用 ScriptEngine 从 Java 运行它。链接的 Java 杂志也没有解释它。文章内容如下:
要激活 ES6 支持,请在命令行上使用
--language=es6。
这确实适用于jjs,但我找不到如何从 Java 代码启用它的方法。为了测试它,我使用了以下代码:
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
...
ScriptEngine engine = new ScriptEngineManager().getEngineByMimeType("application/javascript");
try {
engine.eval("const a = 20;");
} catch (ScriptException e) {
e.printStackTrace();
}
它失败并出现以下异常:
javax.script.ScriptException: <eval>:1:0 Expected an operand but found const
const a = 20;
^ in <eval> at line number 1 at column number 0
[STACK TRACE OMITTED]
我已尝试使用此代码列出所有可用的 ScriptEngineFactories:
import java.util.List;
import javax.script.ScriptEngineFactory;
import javax.script.ScriptEngineManager;
...
List<ScriptEngineFactory> factories = new ScriptEngineManager().getEngineFactories();
for (ScriptEngineFactory factory : factories) {
System.out.println("-----------------------");
System.out.println(factory.getLanguageName());
System.out.println(factory.getLanguageVersion());
}
这仅输出以下内容:
-----------------------
ECMAScript
ECMA - 262 Edition 5.1
这是否意味着我不能从 Java 运行 ECMAScript 6 并且只能使用 jjs?还是我错过了什么?
先谢谢了。
【问题讨论】:
标签: javascript java nashorn