Jython - Java 应用程序

下载 jython-standalone-2.7.0.jar - 从其官方下载页面 http://www.jython.org/downloads.html 并将此 jar 文件包含在 Java CLASSPATH 环境变量中。

此库包含 PythonInterpreter 类。 使用此类的对象,可以使用 execfile() 方法执行任何 Python 脚本。 PythonInterpreter 使您能够直接使用 PyObjects。 Jython 运行时系统已知的所有对象都由类 PyObject 或其子类之一的实例表示。

PythonInterpreter 类有一些常用的方法,在下表中进行了说明。

序号 方法 & 说明
1

setIn(PyObject)

设置用于标准输入流的 Python 对象

2

setIn(java.io.Reader)

设置一个 java.io.Reader 用于标准输入流

3

setIn(java.io.InputStream)

设置一个 java.io.InputStream 用于标准输入流

4

setOut(PyObject)

设置用于标准输出流的 Python 对象

5

setOut(java.io.Writer)

设置 java.io.Writer 以用于标准输出流

6

setOut(java,io.OutputStream)

设置 java.io.OutputStream 用于标准输出流

7

setErr(PyObject)

设置一个 Python 错误对象以用于标准错误流

8

setErr(java.io.Writer

设置一个 java.io.Writer 用于标准错误流

9

setErr(java.io.OutputStream)

设置 java.io.OutputStream 以用于标准错误流

10

eval(String)

评估一个字符串作为 Python 源并返回结果

11

eval(PyObject)

计算一个 Python 代码对象并返回结果

12

exec(String)

在本地命名空间中执行一个 Python 源字符串

13

exec(PyObject)

在本地命名空间中执行一段Python代码对象

14

execfile(String filename)

在本地命名空间中执行一个Python源文件

15

execfile(java.io.InputStream)

在本地命名空间中执行一个Python源的输入流

16

compile(String)

将 Python 源字符串编译为表达式或模块

17

compile(script, filename)

将 Python 源代码的脚本编译为表达式或模块

18

set(String name, Object value)

在局部命名空间设置一个Object类型的变量

19

set(String name, PyObject value)

在本地命名空间中设置一个 PyObject 类型的变量

20

get(String)

获取本地命名空间中变量的值

21

get(String name, Classjavaclass

获取本地命名空间中变量的值。 该值将作为给定 Java 类的实例返回。

以下代码块是一个 Java 程序,它具有 PythonInterpreter 对象的嵌入式 Jython 脚本 "hello.py".usingexecfile() 方法。 它还展示了如何使用 set() 和 get() 方法设置或读取 Python 变量。

import org.python.util.PythonInterpreter;
import org.python.core.*;

public class SimpleEmbedded {
   public static void main(String []args) throws PyException {
      PythonInterpreter interp = new PythonInterpreter();
      System.out.println("Hello, world from Java");
      interp.execfile("hello.py");
      interp.set("a", new PyInteger(42));
      interp.exec("print a");
      interp.exec("x = 2+2");
      PyObject x = interp.get("x");
      System.out.println("x: "+x);
      System.out.println("Goodbye ");
   }
}

编译并运行上述 Java 程序以获得以下输出。

Hello, world from Java
hello world from Python
42
x: 4
Goodbye