私はこれを実行していたときにpythonスクリプトを実行した結果を読んでみたいと思っていました。JavaプログラムはPythonからの連続出力を表示します
私は次のように私の質問を再現:私は私のコードを書き直し
read.java
public static void main(String[] args) throws IOException{
Runtime rt = Runtime.getRuntime();
String[] commands = {"python.exe","hello.py"}; //execute the hello.py under path
Process proc = rt.exec(commands);
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(proc.getInputStream()));
BufferedReader stdError = new BufferedReader(new
InputStreamReader(proc.getErrorStream()));
// read the output from the command
System.out.println("Here is the standard output of the command:\n");
String s = null;
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
// read any errors from the attempted command
System.out.println("Here is the standard error of the command (if any):\n");
while ((s = stdError.readLine()) != null) {
System.out.println(s);
}
hello.py
import time
print "123\n"
time.sleep(5) #wait 5 sec and print next line
print '456'
---更新---
を次のように、しかしそれは動作していないようだ。
public class Hello implements Runnable {
public void run() {
String[] commands = { "python.exe", "hello.py" };
ProcessBuilder pb = new ProcessBuilder(commands);
pb.inheritIO();
try {
Process p = pb.start();
int result = p.waitFor();
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
public static void main(String args[]) {
(new Thread(new Hello())).start();
}
}
すべての結果をすぐに受信している場合は、すべて正常に動作しています。外部プログラムから非同期メッセージを受信したい場合は、スレッド上でさらに作業する必要があります。おそらくプロセス作成者 – Pfeiffer
についてお読みになりたい場合は、 http://www.javaworldを読んでください。 com/article/2071275/core-java/when-runtime-exec --- won-t.html?page = 2 https://www.java-tips.org/java-se-tips-100019/88888889 -java-util/426-from-runtimeexec-to-processbuilder.html – Pfeiffer