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包
jython在Eclipse控制台会出现”Failed to install ”: java.nio.charset.UnsupportedCharsetException: cp0.”的错误,解决方法:
Run → Run Configurations,选择第二个页签Arguments,在VM arguments中添加-Dpython.console.encoding=UTF-8
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