Java 应用程序(Java Application)
下载jython-standalone-2.7.0.jar - 用于在其官方下载页面中嵌入Jython的Java应用程序: http://www.jython.org/downloads.html : jython-standalone-2.7.0.jar并将此jar文件包含在Java CLASSPATH环境变量中。
该库包含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源字符串 |
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 get(String name, Class javaclass 获取本地名称空间中变量的值。 该值将作为给定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