- Jython 教程
- Jython - 首页
- Jython - 概述
- Jython - 安装
- Jython - 导入 Java 库
- Jython - 变量和数据类型
- Jython - 使用 Java 集合类型
- Jython - 决策控制
- Jython - 循环
- Jython - 函数
- Jython - 模块
- Jython - 包
- Jython - Java 应用程序
- Jython - Eclipse 插件
- Jython - 在 Eclipse 中创建一个项目
- Jython - NetBeans 插件和项目
- Jython - Servlets
- Jython - JDBC
- Jython - 使用 Swing GUI 库
- Jython - 布局管理
- Jython - 事件处理
- Jython - 菜单
- Jython - 对话框
- Jython 有用资源
- Jython - 快速指南
- Jython - 有用资源
- Jython - 讨论
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, Class 获取本地命名空间中变量的值。该值将作为给定 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