我尝试在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);
有人能告诉我为什么这是错的吗? 非常感谢你。
答案 0 :(得分:1)
命令行中的单引号用于防止运行命令行的shell对第三个参数进行解释。 Java中不需要它们,因为不再有命令行shell。只需删除单引号。
答案 1 :(得分:0)
尝试使用此代码可能会对您有所帮助。
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();
}