Jython-Javaアプリケーション
ダウンロード jython-standalone-2.7.0.jar -公式ダウンロードページからJavaアプリケーションにJythonを埋め込む場合: http://www.jython.org/downloads.html このjarファイルをJavaCLASSPATH環境変数に含めます。
このライブラリには、 PythonInterpreterクラス。このクラスのオブジェクトを使用すると、Pythonスクリプトを使用して実行できます。execfile()方法。PythonInterpreterを使用すると、PyObjects直接。Jythonランタイムシステムに認識されているすべてのオブジェクトは、クラスPyObjectまたはそのサブクラスの1つのインスタンスによって表されます。
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) ローカル名前空間にオブジェクトタイプの変数を設定します |
19 | set(String name, PyObject value) ローカル名前空間にPyObjectタイプの変数を設定します |
20 | get(String) ローカル名前空間の変数の値を取得します |
21 | get(String name, Class
ローカル名前空間の変数の値を取得します。値は、指定されたJavaクラスのインスタンスとして返されます。 |
次のコードブロックは、Jythonスクリプトが埋め込まれたJavaプログラムです。 “hello.py”.usingexecfile()PythonInterpreterオブジェクトのメソッド。また、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