使用Java调用Python

Java fireling 12811℃

Jython是用Java语言编写的Python实现,并与Java平台集成在一起。Java程序员通过Jython可以实现直接执行Python语句、执行Python脚本,还能实现执行Python函数,与Python函数进行变量交互。

很多时候,可以通过Python进行计算模块的编写,Java负责逻辑应用的编写,二者结合起来事半功倍。美中不足的一点,就是Jython对Python的某些第三方库支持不是太好。下面通过两段代码简单介绍一下如何通过Jython来实现Java调用Python并执行结果。

配置Eclipse:


下载jython-standalone-2.7.0.jar,Eclipse下导入jar包

project

jython在Eclipse控制台会出现”Failed to install ”: java.nio.charset.UnsupportedCharsetException: cp0.”的错误,解决方法:


Run → Run Configurations,选择第二个页签Arguments,在VM arguments中添加-Dpython.console.encoding=UTF-8

jython

Python程序编写(python_func.py):


#coding: utf-8
def add(a, b):
    return a+b
print add(1, 2)

Java程序编写(HelloWorld.java):


package helloworld;
import org.python.util.PythonInterpreter;
import org.python.core.PyFunction;
import org.python.core.PyInteger;
import org.python.core.PyObject;
public class HelloWorld
{
    public static void main(String[] args)
    {
        System.out.println("Hello World!");
        // 开启Python解释器
        PythonInterpreter interpreter = new PythonInterpreter();
        // Java直接执行Python语句
        interpreter.exec("print 'Hello World!'");
        // Java执行Python脚本
        String basePath = HelloWorld.class.getResource("").getPath();
        interpreter.execfile(basePath+"python_func.py");
        // Java执行Python函数
        PyFunction func = (PyFunction) interpreter.get("add", PyFunction.class);
        int a = 1, b = 2;
        PyObject pyobj = func.__call__(new PyInteger(a), new PyInteger(b));
        System.out.println(pyobj.toString());
        // 关闭Python解释器
        interpreter.close();
    }
}    

运行结果:


Hello World!
Hello World!
3
3

 

转载请注明:宁哥的小站 » 使用Java调用Python

喜欢 (31)