【问题标题】:Cannot start java program by using Runtime.getRuntime().exec("commandLine"); in Linux mint无法使用 Runtime.getRuntime().exec("commandLine") 启动 java 程序;在 Linux 薄荷
【发布时间】:2013-11-10 17:06:00
【问题描述】:

我有一个 java 应用程序,它会自行启动另一个 Java 程序。我使用

Runtime.getRuntime().exec("/usr/lib/jvm/java-7-oracle/jre/bin/java -Dfile.encoding=UTF-8 -cp /home/AL/Dropbox/Distributed\ Systems/Project/distributedIM/DS/lib/derbyclient.jar:/home/AT/Dropbox/Distributed\ Systems/Project/distributedIM/DS/lib/gson-2.2.4.jar:/home/AT/Dropbox/Distributed\ Systems/Project/distributedIM/DS/build/classes com.myim.client.main.StartClient");

它在 mac os 10.9 上运行良好,但是当我在 Linux Mint 上尝试时,什么也没发生...... 我
我真的不明白为什么,有人可以帮助我吗?
非常感谢。

【问题讨论】:

  • 您使用的实际命令行是什么?您收到什么错误消息或异常?
  • 相关:stackoverflow.com/q/2876964,尤其是置顶答案。
  • 为什么不直接使用ClassLoader 从Java 启动Java 应用程序?
  • 阅读(并实施)所有 When Runtime.exec() won't 的建议。那可能会解决问题。如果不是,它应该提供更多关于失败原因的信息。然后忽略它引用exec 并使用ProcessBuilder 构建Process。还要将 String arg 拆分为 String[] args 以说明本身包含空格的参数。

标签: java linux linux-mint


【解决方案1】:

试试类似的东西

String[] cmd = new String[] {"/bin/bash", "-c", "ps"}
Runtime.getRuntime().exec(cmd);

在 Linux 中。将ps 替换为您尝试在终端中执行的命令。您甚至可以在命令中使用管道和过滤器:"ps -fe | grep bash"

【讨论】:

    【解决方案2】:

    据我所知,commandline 不是现有的 Unix 程序。如果您将问题中的实际命令替换为 commandline,那么问题很可能是您尝试调用的应用程序在 Linux 中不存在。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-15
      • 2012-05-23
      • 1970-01-01
      • 2014-02-17
      • 1970-01-01
      • 1970-01-01
      • 2012-06-21
      相关资源
      最近更新 更多