【问题标题】:Error while executing linux command using Java使用Java执行linux命令时出错
【发布时间】:2013-08-10 11:51:29
【问题描述】:

我正在尝试使用 Java 执行以下命令

Process acquirInterfaces = Runtime.getRuntime().exec("dumpcap -D");

并得到错误

java.io.IOException: Cannot run program "dumpcap": java.io.IOException: error=2, No such file or directory

执行此命令的 Linux 机器已安装了位于 (/usr/local/bin) 下的 dumpcap

我做错了什么,请帮忙

【问题讨论】:

    标签: java linux


    【解决方案1】:

    使用下面的行,带有确切的路径:

    Process acquirInterfaces = Runtime.getRuntime().exec("/usr/local/bin/dumpcap -D");
    

    【讨论】:

      【解决方案2】:

      那就试试

      Process acquirInterfaces = Runtime.getRuntime().exec("/usr/local/bin/dumpcap -D");
      

      如果您对斜线有任何疑问,请使用 File.separator:

      Process acquirInterfaces = Runtime.getRuntime().exec(File.separator + "usr" + File.separator + "local" + File.separator + "bin" + File.separator + "dumpcap -D");
      

      【讨论】:

      • 为什么斜线会有问题?
      【解决方案3】:

      如上所述,您需要使用可执行文件的全名。原因是在 Unix 系统中,在路径上搜索命令是由 shell 处理的,而不是系统调用本身,所以当你使用系统调用运行命令时,你必须准确指定在哪里找到要运行的程序。

      【讨论】:

      • 感谢 Chrylis,有用的信息
      猜你喜欢
      • 1970-01-01
      • 2015-12-26
      • 2012-04-17
      • 1970-01-01
      • 2017-01-30
      • 2018-04-22
      • 1970-01-01
      • 1970-01-01
      • 2012-10-09
      相关资源
      最近更新 更多