【问题标题】:Execute a shell command line in Java在 Java 中执行 shell 命令行
【发布时间】:2016-01-11 15:25:20
【问题描述】:

我尝试在 Java 中执行 shell 命令,但它不起作用。

我可以直接在 Linux(Ubuntu) 上运行这个命令:

/bin/sh -c 'while true ; do java -jar /home/user/workspace/TCPClientNew/WebContent/NewClient.jar  192.168.138.1 6789 ; sleep 1 ; done'

但是当我使用 Java 执行此操作时,它永远不会执行。它总是显示“未找到”。 这是我的代码:

Runtime rt = Runtime.getRuntime();
Process proc;

String[] commands = {"/bin/sh","-c","'while true ; do java -jar /home/user/workspace/TCPClientNew/WebContent/NewClient.jar "+" "+host+" "+port+ " ; sleep 1 ; done'"};
proc = rt.exec(command);

谁能告诉我为什么错了? 非常感谢。

【问题讨论】:

  • 尝试使用 ProcessBuilder 类并执行你的命令
  • @MiteshParmar 谢谢,但你能告诉我为什么这是错误的吗?

标签: java linux shell


【解决方案1】:

命令行中的单引号是为了防止运行命令行的 shell 解释第三个参数。 Java 中不需要它们,因为不再有命令行 shell。只需删除单引号即可。

【讨论】:

  • * 上没有“谢谢”。只需接受答案:)
【解决方案2】:

尝试使用此代码可能会对您有所帮助。

 try {
            ProcessBuilder pb = new ProcessBuilder("/usr/bin/bash", "-c", "while true ; do java -jar /home/user/workspace/TCPClientNew/WebContent/NewClient.jar"+" "+host+" "+port+ " ; sleep 1 ; done");
            pb.start();
            } finally { 
         //  pb.close();
        }

【讨论】:

    最近更新 更多