【问题标题】:Running exe from java code从java代码运行exe
【发布时间】:2013-12-05 20:48:15
【问题描述】:

我一直在开发一个摇摆应用程序。我有一个有一些按钮和字段的 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 代码。

有人帮忙解决这个问题吗?

【问题讨论】:

标签: java swing


【解决方案1】:

您能否尝试将其设为一个进程,然后等待该进程完成后再退出,如下所示:

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();
}
}
}

【讨论】:

  • @SanCJ 很高兴它起作用了,如果你有机会,我可以打个绿色勾号,以显示问题的答案已被接受 =D
【解决方案2】:

使用 Runtime.exec() 从 java 执行应用程序是众所周知的问题的根源。就像等待进程完成一样,但不使用流缓冲区中的数据是您的应用程序挂起的可靠方法。

我建议您使用像 Apache Common Exec 这样的库来处理这个问题。

不久前我在一个项目上工作,我们使用 Runtime.exec() 来启动一个进程,该进程最终会在现有文件上提取文件。除了在一台用于登台的机器上,一切都运行良好 - 它只会挂起。结果在那台登台机器上,有人设置了日期/时间,因此看起来像是提取的新文件比现有文件更旧,导致外部进程为每个文件生成警告消息,溢出错误缓冲区 - 这我们的应用程序没有消耗!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-25
    • 2013-07-24
    • 2013-06-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2020-07-22
    • 2013-09-06
    相关资源
    最近更新 更多