2016-10-15 4 views
0

Ich habe Python-App und Java-App implementiert. Nehmen wir an, dass meine Python-App als Ergebnis True zurückgegeben wird.Ändern des Pfades zum Ausführen von Python-Code über Java

Ich möchte Python-App über Java-App ausführen, erhalten die Ergebnisse von Python-App in meine Java-App und machen zusätzliche Berechnungen in meiner Java-App.

Ich benutze Prozess in Java für diese Mission. In meinem Beispiel wird die Python-App mit der Datei config.ini als Parameter ausgeführt.

String path = "C:\\Python_Project\\run_app.py configuration\\config.ini"; 
Process p = Runtime.getRuntime().exec("python " + path); 

Es funktioniert nicht. Die Java-App ist nicht ausgefallen, weil ich von der Python-App nichts Interessantes erhalte.

habe ich beschlossen, es über die Eingabeaufforderung ausführen und festgestellt, dass der Lauf, weil ich Import so benutzten in einem meiner internen Dateien fehlgeschlagen ist: von inner_module Import Object1

Vielleicht ist das das Problem? Ich sollte es aus Python-App-Verzeichnis ausführen? Aber wie?

Ich habe zwei Fragen:

  1. Ist es ein Weg, um den Pfad App für das Laufen meines Pythons zu ändern? Ich führe die Java-App aus meinem Java-Anwendungsverzeichnis aus und muss die Python-App im Python-Anwendungsverzeichnis ausführen? Wie kann ich die Perspektive ändern?

  2. Ist die Verwendung von Process und Exec gut? Sollte ich etwas anderes benutzen? Wie kann ich den Prozess verwenden, um die True-Wert-Python-App zu erhalten?

Antwort

0

Sie können ProcessBuilder versuchen, die Sie das Arbeitsverzeichnis festlegen können. Etwas wie:

ProcessBuilder pb = new ProcessBuilder(program, argument); 
pb.directory(new File("path/to/python/directory")); 
Process process = pb.start(); 

Sie können die Ausgabe des Scripts erhalten, indem von process.getInputStream Lesen()

BufferedReader reader = new BufferedReader(
    new InputStreamReader(process.getIntputStream())); 

String output; 
while((output=reader.readLine()) != null) 
    System.out.println(output); 
Verwandte Themen