2016-05-24 16 views
0

Ich möchte den std-Ausgang des folgenden Python-Skripts mit Java Runtime drucken. Mein ideales Ergebnis wäre einfach "Hallo Welt" auszudrucken. Warum bekomme ich java.io.IOException: Cannot run program "python": CreateProcess error=2, The system cannot find the file specified at java.lang.ProcessBuilder.start? Meine Pfad- und Python-Umgebungsvariablen sind ordnungsgemäß konfiguriert.Wie kann ich die std-Ausgabe von Python-Skript mit Java-Laufzeit drucken?

String commandline = "python /c start python C:\\Users\\Name\\HelloWorld.py" 

try { 
       //TODO java.io.IOException: Cannot run program "dir" 
       Process process = Runtime.getRuntime().exec(commandline); 
       process.waitFor(); 

       // Store command line output 
       BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); 

       StringBuilder builder = new StringBuilder(); 
       String line = null; 
       while ((line = reader.readLine()) != null) { 
        builder.append(line); 
        builder.append(System.getProperty("line.separator")); 
       } 
       String result = builder.toString(); 

       if (result != null) { 
        PrintWriter out = resp.getWriter(); 
        out.println("<div>" + result + "</div>"); 
        System.exit(0); 
       } else { 
        PrintWriter out = null; 
       } 

      } catch (IOException e1) { 
       PrintWriter out = resp.getWriter(); 
       e1.printStackTrace(out); 
      } catch (InterruptedException e2) { 
       PrintWriter out = resp.getWriter(); 
       e2.printStackTrace(out); 
      } 
+0

Sie könnten dies tun ... warum kaufen? Warum emulieren Sie die Funktionalität der Python-Skripte nicht in Java oder umgekehrt? Ich werde eine Antwort hinzufügen, aber egal was, es wird nicht portierbar sein, und es wird nicht so gut wie eine native Lösung in Java oder Python sein –

Antwort

1

Eine Möglichkeit, dies zu tun, wäre, Ihre Python-Ausgabe in eine Datei zu ändern. Ich glaube, dass Sie dies etwas einfach durch Änderung des Prozess Zeichenfolge tun:

String commandline = "python /c start python C:\\Users\\Name\\HelloWorld.py > output.txt" 

dann einen der Million Möglichkeiten nutzen, die java/Dateien zu öffnen, hat die Datei lesen zu handhaben, die die Ausgabe enthalten sollten von Ihrem Python-Programm. Vielleicht möchten Sie ein thread.sleep (1000) hinzufügen, da Ihr Python-Skript nicht in der JVM ausgeführt wird und möglicherweise Zeit benötigt, um abzuschließen, da die Anweisungen in Ihrem Java-Programm synchron sind.