【问题标题】:How can I execute shell script from a jar file如何从 jar 文件执行 shell 脚本
【发布时间】:2015-07-24 10:00:23
【问题描述】:

我在 java 中使用 shell 命令。当我在 netbeans 中运行该项目时,它运行良好。但是当我通过命令行运行项目的 jar 文件时,它给出了这个错误

java.io.IOException:无法运行程序“sudo rabbitmqctl list_queues”:错误=2,没有这样的文件或目录

你能知道是否有办法从 jar 文件中运行 shell 命令吗?

【问题讨论】:

  • 你试过的代码是什么?
  • rabbitmqctl list_queues 是我要执行并获取工作队列列表的命令。我以 root 身份运行 jar 文件。
  • 发布执行此命令的代码。
  • String[] cmd = {"rabbitmqctl list_queues"};进程 pb = Runtime.getRuntime().exec(cmd); BufferedReader input = new BufferedReader(new InputStreamReader(pb.getInputStream()));
  • 尝试将命令及其参数放入单独的字符串中,如下所示: String[] cmd = {"rabbitmqctl", "list_queues"};

标签: java shell jar root


【解决方案1】:

你有很多选择:

  1. 您可以使用 RunTime 类。 Runtime getRuntime() exec(String command) 查看Runtime了解更多信息。

  2. 您可以使用 ProcessBuilder。 Process p = new ProcessBuilder("myCommand", "myArg").start(); 查看ProcessBuilder 了解更多信息。

  3. 您可以使用jsch API 将 Linux/Unix 命令从本地计算机执行到任何远程系统。您可以在您的 java 代码中创建一个 shell 脚本(如果您正在运行多个 shell 命令),然后设置一个到远程服务器的 jsch 连接。通过 jsch 连接,您可以将 shell 脚本复制到远程服务器并运行整个 shell 脚本。我发现这第三个选项非常有用。

【讨论】:

    最近更新 更多