Java 如何从jar文件执行shell脚本

Java 如何从jar文件执行shell脚本,java,shell,jar,root,Java,Shell,Jar,Root,我在java中使用shell命令。当我在netbeans中运行该项目时,它运行得很好。但是当我通过命令行运行项目的jar文件时,它给出了这个错误 java.io.IOException: Cannot run program "sudo rabbitmqctl list_queues": error=2, No such file or directory java.io.IOException:无法运行程序“sudo rabbitmqctl list_queues”:错误=2,没有这样的文件或

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

java.io.IOException: Cannot run program "sudo rabbitmqctl list_queues": error=2, No such file or directory java.io.IOException:无法运行程序“sudo rabbitmqctl list_queues”:错误=2,没有这样的文件或目录
您能告诉我是否有办法从jar文件运行shell命令吗?

您有很多选择:

  • 您可以使用运行时类<代码>运行时getRuntime()exec(字符串命令) 查看更多信息

  • 您可以使用ProcessBuilder<代码>进程p=newprocessbuilder(“myCommand”、“myArg”).start()查看以了解更多信息

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


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