输入参数并在运行时通过java swing应用程序继续执行cmd命令。execute()
我有一个用于构建过程的ant命令,当我在命令提示符下执行该命令时,在执行之间,它会提示我输入一些密码,当我输入密码并按enter键时,它会继续执行并给我成功的消息 现在我想在java中使用Runtime.execute(…)以编程方式做同样的事情;在提示输入密码(我正在读取命令提示符的输出)之前,它工作正常,但当cmd output提示输入密码时,我不知道如何显示一个对话框,在该对话框中我可以输入密码,并且使用该密码,我的程序继续执行并成功完成。我想在命令提示符下手动执行相同的操作 所以问题是,是否有可能通过Runtime.execute在命令执行之间输入参数,以及如何通过AT参数恢复命令执行如果是,如何 这是一个执行命令的swing应用程序,我想使用swing Ui对话框获取密码 根据Andy Thomas的建议更新了我的代码:输入参数并在运行时通过java swing应用程序继续执行cmd命令。execute(),java,swing,cmd,Java,Swing,Cmd,我有一个用于构建过程的ant命令,当我在命令提示符下执行该命令时,在执行之间,它会提示我输入一些密码,当我输入密码并按enter键时,它会继续执行并给我成功的消息 现在我想在java中使用Runtime.execute(…)以编程方式做同样的事情;在提示输入密码(我正在读取命令提示符的输出)之前,它工作正常,但当cmd output提示输入密码时,我不知道如何显示一个对话框,在该对话框中我可以输入密码,并且使用该密码,我的程序继续执行并成功完成。我想在命令提示符下手动执行相同的操作 所以问题是,
Process p1 =Runtime.getRuntime().exec("cmd /C my command", null, myProject);
BufferedReader in = new BufferedReader(
new InputStreamReader(p1.getInputStream()));
String line = null;
while ((line = in.readLine()) != null) {
System.out.println(line);
if(line.contains("Please enter password")){
System.out.println("Prompting for password ");
OutputStream child_stdin = p1.getOutputStream();
BufferedWriter child_writer = new BufferedWriter(new OutputStreamWriter( child_stdin ));
child_writer.write( "password123" );
child_writer.flush();
}
}
}
但不起作用。当调用
Runtime.exec()
时,会返回一个表示子进程的进程对象
字符串userPassword
。这个省略从子进程的输出流读取的部分,如果没有该部分,子进程可能会阻塞
Process process = Runtime.getRuntime().exec("...");
...
OutputStream child_stdin = process.getOutputStream();
BufferedWriter child_writer = new BufferedWriter(new OutputStreamWriter( child_stdin ));
child_writer.write( userPassword );
child_writer.newLine(); // suggested by OP
child_writer.flush();
或者,将密码从安全文件加载到
ant
,如图和所示。是否希望用户在控制台中输入?或者在swing gui中?在swing gui中,我想使用swing only创建一个对话框,用户将输入pass并单击ok,然后按ok将使用给定的密码值继续执行。这是100%可能的,您所需要的只是登录按钮的简单操作侦听器,然后需要验证密码。如果所有其他方法都检查出了just run your executable。这很简单,只需创建一个JDialog add 2 textfield one for user anohter for pass,一个按钮,和addActionListener
到按钮如何在执行cmd commad之间传递参数?在OP澄清后进行了显著编辑。我可以得到一些关于如何使用Process.getOutputStream输入密码的代码片段吗?我没有得到任何信息。什么都没有发生。添加命令后,我应该做些什么来继续该命令上面的代码片段。这辆车在那里被卡住了,只是它不能再往前走了。你把车换了吗。。。上面介绍了如何读取子进程的输出流?最后,它运行良好@Andy您只需添加child_writer.newLine()代码>冲水前,我可以接受你的答案。