我一直在使用摇摆应用程序。我有一个JFrame有一些按钮和字段。
在某些按钮点击事件中,我正在从当前目录中打开一个exe。一切正常。
try {
Runtime.getRuntime().exec(System.getProperty("user.dir") +
"\\Upgrade\\Upgrade.exe");
} catch (IOException ex) {
ex.printStacktrace();
}
this.dispose(); // disposing my current java file.
但我需要的是在打开exe文件后退出 java代码。
任何人都可以帮忙解决这个问题。?
答案 0 :(得分:0)
你可以尝试将它作为一个过程,然后在退出之前等待该过程完成,如下所示:
class SO {
public static void main(String args[]) {
try {
Process proc = Runtime.getRuntime().exec("your command");
proc.waitFor(); //Wait for it to finish
System.exit(0);
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
答案 1 :(得分:0)
使用Runtime.exec()从java执行应用程序是众所周知的问题的根源。就像等待进程完成但不消耗流缓冲区中的数据一样,这是应用程序挂起的可靠方法。
我建议您使用像Apache Common Exec这样的库来处理这个问题。
我曾经在一个项目上工作过,我们使用Runtime.exec()来启动一个最终会通过现有文件提取文件的进程。一切都运行良好,除了一台用于分期的机器 - 它只会挂起。事实证明,那个登台机器,有人已经设置了日期/时间,所以它看起来很像被提取的新文件比现有文件更旧,导致外部进程为每个文件生成一条警告消息,溢出错误缓冲区 - 我们的申请没有消耗!