Jython - Java应用程序

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

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

PythonInterpreter类有一些常用的方法,在给出的表中对此进行了解释下面.

Sr.No.方法&说明
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源stri在本地命名空间中

13

exec(PyObject)

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

14

execfile(String filename)

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

15

execfile(java.io.InputStream)

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

16

compile(String)

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

17

编译(脚本,文件名)

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

18

set(String name, Object value)

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

19

set(String name, PyObject value)

在本地名称空间中设置PyObject类型的变量

20

get(String )

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

21

get(String name,Class)

获取本地名称空间中变量的值.该值将作为给定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