Jython - Java-Anwendung
Herunterladen jython-standalone-2.7.0.jar - Zum Einbetten von Jython in Java-Anwendungen von der offiziellen Downloadseite: http://www.jython.org/downloads.html und fügen Sie diese JAR-Datei in die Umgebungsvariable Java CLASSPATH ein.
Diese Bibliothek enthält die PythonInterpreterKlasse. Mit dem Objekt dieser Klasse kann jedes Python-Skript mit dem ausgeführt werdenexecfile()Methode. Mit dem PythonInterpreter können Sie verwendenPyObjectsdirekt. Alle dem Jython-Laufzeitsystem bekannten Objekte werden durch eine Instanz der Klasse PyObject oder eine ihrer Unterklassen dargestellt.
Die PythonInterpreter-Klasse verfügt über einige regelmäßig verwendete Methoden, die in der folgenden Tabelle erläutert werden.
Sr.Nr. | Methode & Beschreibung |
---|---|
1 | setIn(PyObject) Legen Sie das Python-Objekt fest, das für den Standardeingabestream verwendet werden soll |
2 | setIn(java.io.Reader) Legen Sie einen java.io.Reader fest, der für den Standardeingabestream verwendet werden soll |
3 | setIn(java.io.InputStream) Legen Sie einen java.io.InputStream fest, der für den Standardeingabestream verwendet werden soll |
4 | setOut(PyObject) Legen Sie das Python-Objekt fest, das für den Standardausgabestream verwendet werden soll |
5 | setOut(java.io.Writer) Stellen Sie den java.io.Writer so ein, dass er für den Standardausgabestream verwendet wird |
6 | setOut(java,io.OutputStream) Stellen Sie den java.io.OutputStream so ein, dass er für den Standardausgabestream verwendet wird |
7 | setErr(PyObject) Legen Sie ein Python-Fehlerobjekt fest, das für den Standardfehlerstrom verwendet werden soll |
8 | setErr(java.io.Writer Legen Sie einen java.io.Writer fest, der für den Standardfehlerstrom verwendet werden soll |
9 | setErr(java.io.OutputStream) Legen Sie einen java.io.OutputStream fest, der für den Standardfehlerstrom verwendet werden soll |
10 | eval(String) Bewerten Sie eine Zeichenfolge als Python-Quelle und geben Sie das Ergebnis zurück |
11 | eval(PyObject) Bewerten Sie ein Python-Codeobjekt und geben Sie das Ergebnis zurück |
12 | exec(String) Führen Sie eine Python-Quellzeichenfolge im lokalen Namespace aus |
13 | exec(PyObject) Führen Sie ein Python-Codeobjekt im lokalen Namespace aus |
14 | execfile(String filename) Führen Sie eine Datei der Python-Quelle im lokalen Namespace aus |
15 | execfile(java.io.InputStream) Führen Sie einen Eingabestream der Python-Quelle im lokalen Namespace aus |
16 | compile(String) Kompilieren Sie eine Python-Quellzeichenfolge als Ausdruck oder Modul |
17 | compile(script, filename) Kompilieren Sie ein Skript der Python-Quelle als Ausdruck oder Modul |
18 | set(String name, Object value) Legen Sie eine Variable vom Typ Objekt im lokalen Namespace fest |
19 | set(String name, PyObject value) Legen Sie eine Variable vom Typ PyObject im lokalen Namespace fest |
20 | get(String) Ruft den Wert einer Variablen im lokalen Namespace ab |
21 | get(String name, Class
Ruft den Wert einer Variablen im lokalen Namespace ab. Der Wert wird als Instanz der angegebenen Java-Klasse zurückgegeben. |
Der folgende Codeblock ist ein Java-Programm mit einem eingebetteten Jython-Skript “hello.py”.usingexecfile()Methode des PythonInterpreter-Objekts. Es zeigt auch, wie eine Python-Variable mit den Methoden set () und get () gesetzt oder gelesen werden kann.
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 ");
}
}
Kompilieren Sie das obige Java-Programm und führen Sie es aus, um die folgende Ausgabe zu erhalten.
Hello, world from Java
hello world from Python
42
x: 4
Goodbye