在Java代码中使用Jython的Python解释器

0 投票
1 回答
4546 浏览
提问于 2025-04-18 07:42

当我在终端输入 jython 时,我得到了:

Jython 2.2.1 on java1.7.0_51

我想在我的 Java 代码中使用 NLTK 的词性标注功能。我按照 @Vicent 的回答,在 如何通过 jython jar 将 Python 模块添加到 Java 中 的方法,使用了 Python 解释器,

package myjythonproject;

import org.python.util.PythonInterpreter;

public class MyJythonProject {

public static void main(String[] args) {
    try
    {
        PythonInterpreter.initialize(System.getProperties(), System.getProperties(), new String[0]);
        PythonInterpreter interp = new PythonInterpreter();
        interp.execfile("/home/vicent/foo.py");
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
 }
}

只对代码做了一个小改动:

interp.execfile("/Users/ha/Desktop/Code.py"); 

没有错误,但 Code.py 的内容没有显示出来(它只打印了 Hello world)。

if __name__ == "__main__":
    print "Hello World";

我已经从终端编辑了系统路径,指向了 jython 的库文件夹。

我该如何让它正常工作呢?

更新:

在 if 语句之前添加了 print __name__ - 就像 @MikeRixWolfe 建议的那样 - 然后我得到了这个输出:

run:
main
BUILD SUCCESSFUL (total time: 1 second)

所以我把它改成了 if __name__ == "main":,这样就可以正常工作了!

1 个回答

1

很可能是因为这个代码是从Java程序里调用的,所以__name__的值不是 __main__。你可以试着在if语句上面加一行print __name__,这样就能确认了。

撰写回答