gpt4 book ai didi

java - 从另一个程序控制一个java程序

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:10:58 26 4
gpt4 key购买 nike

我想使用 ProcessBuilder 从另一个程序运行 Java 程序

我用了代码

Process pr = rt.exec("cmd /c cd C:\\Users\\naman\\Desktop & java CalculateSum");
BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream()));
BufferedReader error = new BufferedReader(new InputStreamReader(pr.getErrorStream()));
BufferedWriter output= new BufferedWriter(new OutputStreamWriter(pr.getOutputStream()));
String line = null;

while ((line = input.readLine()) != null) {
System.out.println(line);
}

output.write("10");
output.write("30");

while ((line = input.readLine()) != null) {
System.out.println(line);
}

int exitVal = pr.waitFor();
System.out.println("Exited with error code " + exitVal);

CalculateSum 有以下代码:

System.out.print("Enter 1 st value : ");
a=Integer.parseInt(br.readLine());
System.out.print("\nEnter second number : ");
b=Integer.parseInt(br.readLine());
System.out.println("\nresult is : "+(a+b));

我的基本动机是从另一个 Java 程序运行一个 Java 程序。

注意:我不想使用命令行参数来接受输入。我也曾尝试使用 ProcessBuilder 来达到同样的目的,但这也没有用。

最佳答案

您可以使用 ExpectJ (http://expectj.sourceforge.net/) 与另一个使用标准输入/输出的程序对话。

在您的第一个代码块中使用它而不是使用 BufferedReader/BufferedWriter trixing:

ExpectJ expectinator = new ExpectJ(5);
Spawn shell = expectinator.spawn("cmd /c cd C:\\Users\\naman\\Desktop & java CalculateSum");

// Talk to it
shell.expect("Enter 1 st value");
shell.send("10\n");
shell.expect("Enter second value");
shell.send("30\n");

关于java - 从另一个程序控制一个java程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13703033/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com