当我尝试为Rhino(load("nashorn:mozilla_compat.js")
)加载Nashorn兼容性文件时,会出现以下错误:
java.lang.RuntimeException: javax.script.ScriptException: ReferenceError: "net" is not defined in nashorn:mozilla_compat.js at line number 67
我已经尝试了一切让它发挥作用,但没有任何帮助:(
答案 0 :(得分:2)
如果您的脚本(不是mozilla_compat.js
本身)包含具有限定名称的声明,则会发生这种情况:
var x = new net.yourdomain.yourpackage.ClassName();
而不是
importPackage(Packages.net.yourdomain.yourpackage);
var x = new ClassName();
前者在Rhino中运行,但在Nashorn中不起作用,即使使用兼容性脚本也是如此。然而,后者将适用于两种环境。
答案 1 :(得分:0)
我运行了以下代码,发布了最新的JDK 8更新(8u60) - 可供下载@ http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
import javax.script.*;
public class Main {
public static void main(String[] ar) throws Exception {
ScriptEngineManager m = new ScriptEngineManager();
ScriptEngine e = m.getEngineByName("nashorn");
e.eval("load('nashorn:mozilla_compat.js')");
// this should print 'function' and mozilla_compat.js defines that function
e.eval("print(typeof importClass)");
}
}
它按预期打印“功能”。我在jdk9-dev tip forest build上检查了它。它也适用于该版本。请你打印“java -version”并确保你使用的是最新的JDK 8?