从Java运行Python命令行工具
我开发了一个命令行工具,需要从一个Java图形界面应用程序中调用。负责Java图形界面的团队希望把我的命令行应用程序绑定到界面上的一个按钮上;而我的Python应用程序目前没有时间或兴趣重写成Java。
我对Java完全没有经验,所以我想请教你们:
把一个基于命令行的Python应用程序绑定到一个Java图形界面应用程序的按钮上,最好的方法是什么?
我非常担心异常管理(也就是如何让Java知道Python出错了)。
谢谢。
3 个回答
0
我同意phlip的观点——你可以在Java中创建一个脚本引擎,然后用它来调用你的Python代码。只要你的Python代码没有使用一些特殊的操作系统库调用或DLL,这样做应该没问题。这个链接:http://jythonpodcast.hostjava.net/jythonbook/chapter10.html会给你提供更多关于你需要的具体机制的信息。
0
你有没有考虑过使用jython?它可以让你做到以下几点:
1) 用它来运行Python脚本,这样就可以调用Java类。
2) 把Python代码编译成类文件,这样普通的Java代码就可以使用这些文件,而运行时不需要jython。
我只用过第一种方式,但我看到很多关于第二种方式的文档。
1
你可以通过使用 Runtime.exec() 来从Java中执行一个新进程。这里有一些例子。
确保你能同时捕获标准输出(stdout)和错误输出(stderr),具体可以参考 这个回答。这样你就可以报告错误了。你还可以获取应用程序的退出代码,所以要确保应用程序本身能正确报告错误。使用错误代码来检测错误会比解析输出流更可靠(我觉得)。