java程序在执行cmd命令时卡住

java程序在执行cmd命令时卡住,java,swing,cmd,exec,runtime.exec,Java,Swing,Cmd,Exec,Runtime.exec,我正在开发一个java应用程序,它允许在不需要手动编译的情况下删除或粘贴源代码并运行它。它所做的是将java代码从文本框保存到一个文本文件,并在执行javac java-file.file后执行cmd命令javafile 工作正常,但当java文件没有任何输出时会遇到这个问题。我的意思是,如果代码创建一个swing form..cmd没有任何输出。那么我的java程序就卡住了,实际上我无法关闭它。我必须使用外部程序来关闭它,就像taskmanager一样。 但当源代码有命令行输出时,这个问题就从

我正在开发一个java应用程序,它允许在不需要手动编译的情况下删除或粘贴源代码并运行它。它所做的是将java代码从文本框保存到一个文本文件,并在执行javac java-file.file后执行cmd命令javafile

工作正常,但当java文件没有任何输出时会遇到这个问题。我的意思是,如果代码创建一个swing form..cmd没有任何输出。那么我的java程序就卡住了,实际上我无法关闭它。我必须使用外部程序来关闭它,就像taskmanager一样。 但当源代码有命令行输出时,这个问题就从未发生过

OutputStream stdin = null;
BufferedReader br = null;
String line = null;
String command = null;

command = jTextField1.getText();

System.out.println(command);
Process p = Runtime.getRuntime().exec(command);
stdin = p.getOutputStream(); //use this to push commands

//processing stdout
br = new BufferedReader(new InputStreamReader(p.getInputStream()));
// br.flush();  
byte[] bytes = new byte[4096];
///////////////////////////////////////////
BufferedInputStream in = new BufferedInputStream(p.getInputStream());
while (in.read(bytes) != -1)
{
    jTextArea1.append(br.readLine()+"\n");
}
///////////////////////////////////////////

实际上,您正在阻止事件调度线程,阻止它更新UI。看一看和更多的想法…同时,看一看阅读和实施的所有建议。这可能会解决问题。如果没有,它应该提供更多关于失败原因的信息。然后忽略它引用exec,并使用ProcessBuilder构建流程。还可以将字符串arg拆分为字符串[]args,以说明本身包含空格的参数。我正在开发一个java应用程序,该应用程序允许在不手动执行编译过程的情况下删除或粘贴源代码并运行它。与启动新进程相比,它有许多优点,包括更好的报告,并且可以在内存中编译源代码,而无需先保存到磁盘。