从java代码运行exe

时间:2013-11-21 11:41:27

标签: java swing

我一直在使用摇摆应用程序。我有一个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代码。

任何人都可以帮忙解决这个问题。?

2 个答案:

答案 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()来启动一个最终会通过现有文件提取文件的进程。一切都运行良好,除了一台用于分期的机器 - 它只会挂起。事实证明,那个登台机器,有人已经设置了日期/时间,所以它看起来很像被提取的新文件比现有文件更旧,导致外部进程为每个文件生成一条警告消息,溢出错误缓冲区 - 我们的申请没有消耗!