2011-06-14 63 views
0

中找不到函數說明我正在使用javax.script中的JavaScript支持來對JS腳本進行一些基本的單元測試,並且遇到了問題。TypeError:在

我有一些代碼eval(...)是我在ScriptEngine的一個實例中的必備lib文件,其中包括一個有我的函數等等的文件。

然後我在ScriptEngine的同一個實例中評估另一個文件,其中我有一些函數作爲測試,然後調用測試。

但是,儘管所有的evals工作沒有問題,我得到一個錯誤,對我來說,暗示加載函數的問題。

javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: TypeError: Cannot find function blah. (<Unknown source>#x) in <Unknown source> at line number x

回答

0

兩個獨立eval呼籲同ScriptEngine爲我工作。您是否設置了新的ScriptContext或以其他方式取消了您對blah的定義?

public class TryScripting { 
    public static void main(String[] args) throws ScriptException { 
    ScriptEngine engine = new ScriptEngineManager().getEngineByExtension("js"); 
    String makeFun = "function hello() {\n" + 
      "return \"hello world\";\n" + 
      "}\n" + 
      "{\n" + 
      "}"; 
    engine.eval(makeFun); 

    engine.eval("myVar = hello()"); 
    ret = engine.get("myVar"); 
    System.out.println(ret); 
    } 
}