我正在使用Jython 2.5.1和JSR-223(即javax.script包),我期待Python腳本的最後一行被返回。例如,在評估此腳本之後:使用JSR-223從Jython腳本獲取數據
class Multiplier:
def multiply(self, x, y):
return x * y
Multiplier().multiply(5, 7)
我應該回到35,但是我得到空值。另一方面它可以與其他測試一起使用:
5 * 7
我在做什麼錯了?
這裏的Java代碼:
public static void main(String[] args) throws Exception {
ScriptEngine engine = new ScriptEngineManager().getEngineByName("python");
FileReader f = new FileReader("Multiplier.py");
Object result = engine.eval(f);
//assert(result == 35);
}
PS:它工作正常使用JRuby,Groovy和犀牛,即總是返回的最後一行。
在此先感謝。
Java代碼幾乎就是你所寫的,並且我設法按照你所做的來打印結果。我真正需要的是在調用engine.eval(f)之後得到結果,而不是僅僅打印它。對象結果=引擎。EVAL(F); – 2009-12-11 12:59:47
將評估結果分配給變量,並在評估完成後從引擎中獲取它,謝謝!但是我仍然想知道爲什麼我對其他引擎的行爲不適用於Jython。我會把問題打開一段時間,也許有人知道。 – 2009-12-11 13:59:54
好問題。讓我們看看是否有人有答案(我不知道)。 – 2009-12-11 14:41:32