Jython SyntaxError(来自Java应用程序)

时间:2013-04-02 23:11:54

标签: java syntax-error jython

在我的Java应用程序中,我想使用Jython来解释Python代码 所以我按如下方式初始化Jython:

PySystemState.initialize();
PythonInterpreter jython = new PythonInterpreter();

然后我想像这样测试它:

jython.eval("out = ''");
jython.eval("out += 'Test1\n'");
jython.eval("out += 'Test2\n'");
System.out.println(jython.get("out").toString());

但是,第一个eval行会抛出此错误:

  File "<string>", line 1
    out = ''
       ^
SyntaxError: mismatched input '=' expecting EOF

当我使用 exec 而不是 eval 进行尝试时,我收到此错误:

  File "<string>", line 2
    '
    ^
SyntaxError: no viable alternative at character '''

我在这里做错了什么想法?

PS:我正在使用jython-2.5.4-rc1

2 个答案:

答案 0 :(得分:2)

您需要确保拥有以下内容

  • 声明out变量
  • 因为您使用的是Java,所以请转义\\n
  • 等特殊字符
  • 使用exec而不是eval

这将产生:

PythonInterpreter jython = new PythonInterpreter();
jython.set("out", new PyString());
jython.exec("out = ''");
jython.exec("out += 'Test1\\n'");
jython.exec("out += 'Test2\\n'");
System.out.println(jython.get("out").toString());

答案 1 :(得分:0)

您应该使用 exec 来执行语句。 eval 评估并返回 PyObject