python是用java开发的_使用Java调用Python

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.png

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

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

jython-300x254.png

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