Jython - Java 应用程序


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

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

PythonInterpreter 类有一些常用的方法,下表对此进行了解释。

先生。 方法及说明
1

设置(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

设置错误(PyObject)

设置用于标准错误流的 Python 错误对象

8

setErr(java.io.Writer)

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

9

setErr(java.io.OutputStream)

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

10

评估(字符串)

将字符串作为 Python 源进行计算并返回结果

11

评估(PyObject)

评估 Python 代码对象并返回结果

12

执行(字符串)

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

13

执行(PyObject)

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

14

execfile(字符串文件名)

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

15

execfile(java.io.InputStream)

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

16

编译(字符串)

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

17 号

编译(脚本,文件名)

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

18

设置(字符串名称,对象值)

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

19

设置(字符串名称,PyObject 值)

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

20

获取(字符串)

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

21

获取(字符串名称,类java类

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

以下代码块是一个 Java 程序,具有嵌入的 Jython 脚本“hello.py”.usingexecfile() PythonInterpreter 对象的方法。它还展示了如何使用 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