下载 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