gpt4 book ai didi

javascript - 在 Java 7 上运行符合 ECMAScript 5 的 javascript

转载 作者:搜寻专家 更新时间:2023-10-31 20:33:14 28 4
gpt4 key购买 nike

我想使用 Java 7 的嵌入式 javascript 引擎运行 javascript。我尝试运行的代码符合 ECMAScript 5,这应该不是问题,因为嵌入式 Rhino 的版本是 1.7 release 3。支持它。然而,运行以下代码段不起作用:

    ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
engine.eval("var char = 'a';");

它因错误 missing variable name 而失败,这表明 char 是保留关键字。但是,char 在 ECMAScript 5 中不再保留,所以我完全糊涂了。问题是哪个 javascript 版本应该与 java 7 中的嵌入式 Rhino 一起工作?

我使用的是java 1.7.0_80,引擎报告的语言版本是1.8,引擎版本是1.7 release 3 PRERELEASE .

最佳答案

正如@RealSkeptic 所指出的,OpenJDK 7 (Rhino 1.7 r4) 的嵌入式脚本引擎在运行上述 javascript 片段时没有问题。好像Rhino 1.7 r3不能运行,所以使用Oracle Java 7运行需要1.7 r4(或以上)的外部Rhino,可以从here下载。为了完整起见,问题中基于 Rhino 自己的 API 的代码的 java 等效项如下所示:

import org.mozilla.javascript.Context;
import org.mozilla.javascript.ScriptableObject;

public class Rhino {

public static void main(String[] args) throws Exception {
Context context = Context.enter();
try {
ScriptableObject scope = context.initStandardObjects();
context.evaluateString(scope, "var char = 'a'", "test", 1, null);
} finally {
Context.exit();
}
}

请注意,导入声明很重要,因为相同的类可以捆绑在 JDK 中的不同包中:

import sun.org.mozilla.javascript.internal.Context;
import sun.org.mozilla.javascript.internal.ScriptableObject;

导入它们会导致将嵌入式引擎与 Rhino 的 API 一起使用,这将无法正常工作。

关于javascript - 在 Java 7 上运行符合 ECMAScript 5 的 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33211039/

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