2012-03-14 32 views
3

我正在使用javax.script。*包評估Java文件中的JavaScript。我正在使用ScriptEngine對象來評估一些javaScript代碼。 javaScript代碼返回一個布爾值。我不確定如何捕獲Java文件中的布爾值。對於例如,參見:在使用javax.script.ScriptEngine對象評估javaScript代碼之後返回布爾值

import javax.script.*; 
public class Test { 
    public static void main(String[] args) throws Exception { 
     ScriptEngineManager factory = new ScriptEngineManager(); 
     ScriptEngine engine = factory.getEngineByName("JavaScript"); 
     String filepath = "../test.js"; 
     engine.eval(new java.io.FileReader(filepath)); 
    } 
} 

test.js

function test(value) { 
    if(value==1) { 
     println("True"); 
     return true; 
    } else { 
     println("False"); 
     return false; 
    } 
} 

var i=1; 
test (i); 

我嘗試以下:

Boolean result = (Boolean) engine.eval(new java.io.FileReader(filepath)); 

上述線拋出java.lang.NullPointerException錯誤。

感謝, 索尼

+0

你倆的'println's的工作嗎? – 2012-03-14 02:52:27

+0

是的,println聲明正常工作。我編輯了test.js中的代碼。 – sony 2012-03-14 03:08:44

+1

發佈堆棧跟蹤。 – McDowell 2012-03-14 09:59:19

回答

1

在JS:

var result=test (i); 

在Java

engine.eval.... 
engine.get("result");