1、首先,先写一个 hello.py 的 Python 代码:def hello(): return 'Hello'。在 Java 代码中调用这个 Python 函数:import org.python.core.PyFunction;import org.python.core.PyObject;import org.python.util.PythonInterpreter;public class HelloPython { public static void main(String[] args) { PythonInterpreter interpreter = new PythonInterpreter(); interpreter.execfile("D:/labs/hello.py"); PyFunction pyFunction = interpreter.get("hello", PyFunction.class); //。
2、然后,第一个参数为期望获得的函数(变量)的名字,第二个参数为期望返回的对象类型,PyObject pyObject = pyFunction.__call__(); // 调用函数 ,System.out.println(pyObject); } }。
3、然后,上面的代码执行结果为:Hello,即便只是调用一个函数,也必须先加载这个 .py 文件,之后再通过 Jython 包中所定义的类获取、调用这个函数。
4、然后,如果函数需要参数,在 Java 中必须先将参数转化为对应的“ Python 类”(姑且可以称作 Jython 类型,例如:__call__(new PyInteger(a), new PyInteger(b))a,b的类型均为 Java 中的 int 型,还有一些 Jython 类型诸如:PyString(Stringstring)、PyList(Iterator<PyObject>iter)等,详细信息可以参考官方的 api 文档。
5、然后,在本地环境中调用Python脚本,由于 Jython运行过慢并且不支持第三方的 Python 模块,通过 Java 代码执行一段终端命令来调用 Python 脚本可能才是实际中真正会用到的方式。
6、最后,运行流程:Java Swing 界面接收用户输入 --> Java 将用户输入写到本地文件中 --> Java 调用本地 Python 脚本 --> Python 从本地文件拿到用户输入 --> Python 处理用户输入得到最终结果 --> Python 把最终结果写到本地文件 --> Java 对 Python 脚本的调用结束 --> Java 从本地文件中取出最终结果 --> Java 把最终结果返回给用户。