Cet article décrit la méthode d'appel des scripts Python dans les programmes Java. Partagez-le pour votre référence, comme suit:
Dans le développement de programmes, vous devez parfois appeler des scripts Python connexes dans les programmes Java. Le contenu suivant enregistre les étapes pour démarrer et solutions aux problèmes possibles.
1. Créez un nouveau projet Maven dans Eclipse;
2. Après avoir ajouté le package de dépendance suivant au fichier pom.xml, mettez à jour le projet Maven;
<dependency> <proupId> org.python </proupId> <Artifactid> Jython </artifactId> <Dersion> 2.7.0 </DERNIFRIENT> </DENDENCENCE> <Dendency> <ProupId> Org.python </proupId> <Ertifactid> Jython-standone </Rtifactid> <version> 2.7.0 </DERNÉRATION> </Dedency>
3. Écrivez le code de test suivant;
import org.python.util.pythoninterpreter; public class jpythonscript {public static void main (string args []) {pythoninterpreter interprète = new pythoninterpreter (); interprète.exec («jours = (« mod »,« mar »,« mer »,« thu »,« ven »,« same »,« soleil »);»); interprète.exec ("Print Days [1];"); }}4. Test:
L'erreur suivante se produit:
Console: Échec de l'installation '': java.nio.charse.UNSUPPORTEDCHARSException: CP0.
Exception dans le thread "Main" Importor: Import Importer le module du site et ses dépendances: Aucun module nommé site
Déterminez si les attributs suivants sont corrects:
* sys.path: ['... python // jython // 2.7.0 // lib', '__classpath__', '__pyclasspath __ /']
Cet attribut pourrait inclure les mauvais répertoires, comme de CPython
* sys.prefix: *** / jython / 2.7.0
Cet attribut est défini par la propriété système Python.home, bien qu'elle puisse
Soyez souvent automatiquement déterminé par l'emplacement du fichier de Jar Jython
Vous pouvez utiliser l'option -s ou python.import.site = false pour ne pas importer le module du site
5. Résolution de problèmes:
Le code de refactorisation est le suivant:
import java.util.properties; import org.python.util.pythoninterpreter; public class jpythonscript {public static void main (String args []) {Properties props = new Properties (); propuls.put ("python.home", "chemin vers le dossier lib"); props.put ("python.console.encoding", "utf-8"); props.put ("Python.Security.RespectJavaAccessibility", "false"); props.put ("python.import.site", "false"); Propriétés Preprops = System.getProperties (); Pythoninterpreter.Initialize (preprops, accessoires, nouvelle chaîne [0]); Pythoninterpreter interprète = new pythoninterpreter (); interprète.exec («jours = (« mod »,« mar »,« mer »,« thu »,« ven »,« same »,« soleil »);»); interprète.exec ("Print Days [1];"); }}6. La compilation a réussi.
7. Référence pour la résolution des problèmes:
http://bugs.jython.org/issue2355
Supplément: Solution à Jpython Error Throwing Importer le module du site
Exception dans le thread "Main" Importor: Import Importer le module du site et ses dépendances: Aucun module nommé site
classe publique jpythonscript {public static void main (String args []) {Properties props = new Properties (); props.put ("python.import.site", "false"); Propriétés Preprops = System.getProperties (); Pythoninterpreter.Initialize (preprops, accessoires, nouvelle chaîne [0]); Pythoninterpreter interprète = new pythoninterpreter (); interprète.exec («jours = (« mod »,« mar »,« mer »,« thu »,« ven »,« same »,« soleil »);»); interprète.exec ("Print Days [1];"); } // Effectuer une carte de traitement d'acceptation de classe complexe <String, objet> res = new hashmap <string, objet> (); res.put ("1", "danny"); res.put ("2", "Fanny"); pythoninterpreter interpm = new pythoninterpreter (); interpr.execfile ("./ src / com / datadeal.py"); pyfunction pyfonction); (Pyfonction) Interpm.get ("Main", pyfonction.class); map <pyObject, pyObject> Tablem = new hashmap <pyObject, pyObject> (); tablem.put (new pystring ("confit"), pyjavatype.wrapjavars (res)); pydictionary pydm = new pydctionary (Res); pydictionary pydm = new pydctionary (Res); pydictionary pydm);Pour plus de contenu lié à Java, les lecteurs qui sont intéressés par ce site peuvent afficher les sujets: "Tutoriel de structure de données Java et d'algorithme", "Résumé des conseils de nœud de Dom Operation Java", "Résumé du fichier Java et des conseils d'opération de répertoire" et "Résumé des conseils d'opération Java Cache"
J'espère que cet article sera utile à la programmation Java de tous.