Java Nashorn兼容性文件崩溃

时间:2015-08-27 17:11:43

标签: java runtimeexception nashorn

当我尝试为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

我已经尝试了一切让它发挥作用,但没有任何帮助:(

2 个答案:

答案 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?