【问题标题】:How to open a terminal window and execute a customer program in java如何在java中打开终端窗口并执行客户程序
【发布时间】:2013-01-06 05:51:50
【问题描述】:

我想打开一个新的终端窗口并用 java 代码执行我的程序。所以我使用:

Runtime.getRuntime().exec("gnome-terminal -x /path/to/my/program arg1 arg2"); 

这在 Ubuntu 中运行良好,但不幸的是在 CentOS 中无法运行,问题是终端窗口立即关闭。

我在 stackoverflow 中搜索了很多次,但找不到解决方案。非常感谢!!!

【问题讨论】:

  • 您尝试在什么终端仿真器/桌面环境下执行此操作?
  • 较新的替代 ProcessBuilder 涵盖了 exec 的一些脆弱性。
  • 1) 在创建新进程时会犯一些常见错误——详见When Runtime.exec() won't。这篇文章是检查进程是否失败的first。实施所有提示,即使这样做不会使流程正常工作,它也会提供有关失败原因的更详细信息。 2) 使用ProcessBuilder 构建流程。 3) 为了获得更可靠的结果,请将基于 String 的参数转换为 String[]
  • 自己直接在命令行输入会不会有什么异常?
  • 在shell中,type gnome-terminal在Ubuntu和CentOS机器上的输出是什么?

标签: java linux process terminal runtime.exec


【解决方案1】:

谢谢大家。我发现问题是当我将我的程序复制到 CentOS 时,缺少执行权限,因此终端无法执行它然后关闭。

【讨论】:

    【解决方案2】:
    try{
        Process pr =new ProcessBuilder("gnome-terminal", "-e", "pathToScript/script.sh").start();
        }catch(Exception e){
            e.printStackTrace();
        }
    

    【讨论】:

      猜你喜欢
      • 2018-02-03
      • 1970-01-01
      • 2016-10-20
      • 1970-01-01
      • 2016-08-16
      • 2014-07-20
      • 2013-11-18
      • 2019-10-26
      • 2011-12-04
      相关资源
      最近更新 更多