2017-09-19 4 views
0

J'utilise la classe org.python.util.PythonInterpreter pour exécuter du code python dans java. Veuillez trouver ci-dessous l'extrait de mon code.Fonction exec PythonInterpreter Retourne le flux de sortie vide

PythonInterpreter pythonInterpreter = new PythonInterpreter(null, new PySystemState()); 

ByteArrayOutputStream outStream = new ByteArrayOutputStream(16384); 

pythonInterpreter.setOut(outStream); 
pythonInterpreter.setErr(outStream); 

// execute the code 
pythonInterpreter.exec(script); 

String consoleOutput = outStream.toString(); 
outStream.flush(); 

System.out.println("Console output :- "+consoleOutput); 

Le problème avec le code ci-dessus est pour le script même parfois je reçois « consoleOutput » vide. Je ne suis pas capable de comprendre le problème. Pour exécuter le code ci-dessus 1000 fois, au moins 4 fois je reçois une sortie vide.

D'autre part, si j'utilise le constructeur par défaut comme indiqué ci-dessous, il fonctionne très bien

PythonInterpreter pythonInterpreter = new PythonInterpreter(); 

Répondre

0

Creuser plus dans le problème que je trouve, en définissant la propriété python.site.import-false déclenche ce problème. Ce problème se produit dans Jython autonome version 2.7.0. La mise à jour vers la version de juin 2017 du fichier standalone jar (2.7.1) résout ce problème.