
- 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