我想编写一个程序来执行JAR并获取它们的输出。 当JAR程序只有一个打印语句时它可以正常工作,但是当它在执行过程中要求输入时,程序会冻结。通过Java进程将输入发送到正在运行的JAR
代码的JAR文件程序:
public class jartorun {
public static void main(String arg[]) throws IOException {
String t = "javaw -jar D:\\jarcheck\\temp.jar";
Process p = Runtime.getRuntime().exec(t);
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = input.readLine()) != null) {
System.out.print(line + "\n");
}
input.close();
}
}
我可以使用process.getOutputStream()
给输入JAR,但我会怎样:
import java.util.*;
public class demo {
public static void main(String r[]) {
Scanner sc = new Scanner(System.in);
System.out.println("Hello ...");
System.out.println("please enter the number :");
int i = sc.nextInt();
System.out.println(" number : " + i);
}
}
它运行的JAR文件的原始程序代码使用它,所以我可以创建一个程序,可以给JAR输入并同时读取其输出?
你为什么从Java运行'jar'?为什么不把它加载到类路径中并简单地调用该方法?此外,如果您选择从Java运行外部程序,请使用新的['ProcessBuilder'](http://stackoverflow.com/questions/6856028/difference-between-processbuilder-and-runtime-exec)而不是'Runtime .exec'。 –