- 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 應用程式:http://www.jython.org/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