Jython - Java 应用程序



下载 jython-standalone-2.7.0.jar - 从其官方下载页面嵌入 Jython 到 Java 应用程序:https://www.jython.cn/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 程序,其中嵌入了 Jython 脚本 “hello.py”。使用 PythonInterpreter 对象的 execfile() 方法。它还展示了如何使用 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
广告