Jython 简明教程
Jython - Java Application
下载 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 类有一些常用方法,在下面给出的表中对此进行了说明。
Sr.No. |
Method & Description |
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, Class javaclass 获取局部命名空间中变量的值。此值将作为给定 Java 类的实例返回。 |
以下代码块是 Java 程序,它嵌入了 PythonInterpreter 对象的 “hello.py”.usingexecfile() 方法的 Jython 脚本。它还展示了如何使用 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