Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从另一个控制java程序_Java - Fatal编程技术网

从另一个控制java程序

从另一个控制java程序,java,Java,我想使用ProcessBuilder 我用了密码 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 InputSt

我想使用
ProcessBuilder

我用了密码

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来达到同样的目的,但也没有成功。

只是盲目地猜测问题是什么,问题可能就在这里

尝试添加
System.out.flush()
在CalculateSum中每次打印后

在第一个程序中,向output.write调用添加换行符,例如
output.write(“10\n”)
,以及
output.flush()之后。

您可以使用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程序!!??老兄,干什么?你想要实现什么?你为什么需要这个?sockets编程怎么样?在上面给出的例子中,我有源代码,所以我可以用它进行编辑,但实际上我没有源代码。我只有访问另一个程序的代码。等等,你有什么代码?客户机(您问题中的第一个)或CalculateSum?因此,我建议在第一个代码块中使用ExpectJ(请参见编辑),而不是在第二个代码块中使用ExpectJ(即CalculateSum)。我想它真的能用!