从Java打开和关闭应用程序

从Java打开和关闭应用程序,java,processbuilder,Java,Processbuilder,我正在尝试使用ProcessBuilder在cmd.exe中启动应用程序,等待它完成,然后关闭它。到目前为止,我试过: String[] cmdline=new Stirng{}("cmd.exe","/C","start",application_and_parameters); ProcessBuilder processBuilder = new ProcessBuilder(cmdline); Process p = processBuilder.start(); //get error

我正在尝试使用
ProcessBuilder
cmd.exe中启动应用程序,等待它完成,然后关闭它。到目前为止,我试过:

String[] cmdline=new Stirng{}("cmd.exe","/C","start",application_and_parameters);
ProcessBuilder processBuilder = new ProcessBuilder(cmdline);
Process p = processBuilder.start();
//get error and input streams
int exitVal = p.waitFor();
它会按预期打开窗口,但不会关闭。我试过:

p.destroy()
并发送退出命令:

BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));
writer.write("exit");
writer.flush();

但如果没有成功,cmd会留下来。有人能提出解决方案吗?

删除start,它将直接执行您的流程,而无需打开命令提示符,因此您无需手动关闭它。下面是您的代码片段作为示例

String[] cmdline=new String[]{"cmd.exe","/C","notepad.exe"};
                ProcessBuilder processBuilder = new ProcessBuilder(cmdline);
                Process p = processBuilder.start();
                //get error and input streams
                int exitVal = p.waitFor();
                System.out.println(exitVal);

字符串[]cmdline=新字符串[]{“cmd.exe”、“/C”、“notepad.exe”}; ProcessBuilder ProcessBuilder=新的ProcessBuilder(cmdline); 进程p=processBuilder.start(); //获取错误和输入流 int exitVal=p.waitFor(); 系统输出打印LN(exitVal);

试试这个: