Dieser Artikel beschreibt die Methode, Python -Skripte in Java -Programmen aufzurufen. Teilen Sie es für Ihre Referenz wie folgt weiter:
In der Programmentwicklung müssen Sie manchmal verwandte Python -Skripte in Java -Programmen aufrufen. Der folgende Inhalt zeichnet die Schritte auf, um zu beginnen, und Lösungen für mögliche Probleme.
1. Erstellen Sie ein neues Maven -Projekt in Eclipse;
2. Nachdem das folgende Abhängigkeitspaket zur Datei pom.xml hinzugefügt wurde, aktualisieren Sie das Maven -Projekt.
<dependency> <groupId>org.python</groupId> <artifactId>jython</artifactId> <version>2.7.0</version></dependency><dependency> <groupId>org.python</groupId> <artifactId>jython-standalone</artifactId> <version>2.7.0</version></dependency>
3. Schreiben Sie den folgenden Testcode;
import org.python.util.pythonInterpreter; public class jpythoncript {public static void main (String args []) {pythonInterpraeter interpreter = new PythonInterPreter (); interpreter.exec ("Days = (" mod "," tue "," mi "," thu "," fr "," sa "," sun ");"); interpreter.exec ("Drucktage [1];"); }}4. Test:
Der folgende Fehler tritt auf:
Konsole: Die nicht installierte '': java.nio.charset.unsupportedCharSetException: CP0.
Ausnahme im Thread "Haupt" ImporteurRror: Das Site -Modul und seine Abhängigkeiten kann nicht importiert werden: Kein Modul namens Site
Bestimmen Sie, ob die folgenden Attribute korrekt sind:
* sys.Path: ['... python // jython // 2.7.0 // lib', '__classPath__', '__pyclassPath __/']
Dieses Attribut könnte die falschen Verzeichnisse enthalten, z. B. von CPython
*sys.prefix: ***/jython/2.7.0
Dieses Attribut wird von der Systemeigenschaft Python.hoome festgelegt, obwohl es kann
häufig automatisch durch den Ort der Jython -JAR -Datei bestimmt werden
Sie können die Option -S -Option oder python.import.sit = false verwenden, um das Site -Modul nicht zu importieren
5. Problemlösung:
Der Refactoring -Code lautet wie folgt:
importieren java.util.properties; import org.python.util.pythonInterpreter; public class jpythonscript {public static void main (String args []) {Properties props = new Properties (); props.put ("python.home", "Pfad zum Lib -Ordner"); props.put ("python.console.encoding", "utf-8"); props.put ("python.security.respectjavaAccessibility", "false"); props.put ("python.import.site", "false"); Eigenschaften preprops = system.getProperties (); PythonInterpreter.initialize (Preprops, Requisiten, neue String [0]); PythonInterpreter interpreter = new PythonInterpreter (); interpreter.exec ("Days = (" mod "," tue "," mi "," thu "," fr "," sa "," sun ");"); interpreter.exec ("Drucktage [1];"); }}6. Zusammenstellung war erfolgreich.
7. Referenz zur Lösung von Problemen:
http://bugs.jython.org/issue2355
Ergänzung: Lösung zum JPython -Fehlerwurf kann nicht das Standortmodul importieren
Ausnahme im Thread "Haupt" ImporteurRror: Das Site -Modul und seine Abhängigkeiten kann nicht importiert werden: Kein Modul namens Site
public class jpythoncript {public static void main (String args []) {Properties props = new Properties (); props.put ("python.import.site", "false"); Eigenschaften preprops = system.getProperties (); PythonInterpreter.initialize (Preprops, Requisiten, neue String [0]); PythonInterpreter interpreter = new PythonInterpreter (); interpreter.exec ("Days = (" mod "," tue "," mi "," thu "," fr "," sa "," sun ");"); interpreter.exec ("Drucktage [1];"); } // Komplexe Klassenakzeptanzverarbeitungskarte <String, Objekt> res = new Hashmap <String, Object> (); res.put ("1", "Danny"); res.put ("2", "fanny"); = (Pyfunction) interpm.get ("main", pyfunction.class); map <pyObject, pyobject> tablem = new Hashmap <pyobject, pyObject> (); tableme.put (new Pystring ("confrible"), pyjavatype.wrapjavaobject (res);Für mehr Java-bezogene Inhalte können Leser, die an dieser Website interessiert sind, die Themen anzeigen: "Java-Datenstruktur und Algorithmus-Tutorial", "Zusammenfassung der Java-Operation DOM-Knoten-Tipps", "Zusammenfassung der Java-Datei- und Verzeichnisoperationstipps" und "Zusammenfassung von Java Cache Operation Tipps" "
Ich hoffe, dieser Artikel wird für Java -Programme aller hilfreich sein.