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 javaclass

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