2016-01-11 235 views
0

我試圖在Java中執行shell命令,但它不起作用。在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

嘗試使用的ProcessBuilder類和執行你的命令 –

+0

@MiteshParmar感謝,但你能告訴我,爲什麼這是錯的? – EagerToLearn

回答

1

命令行中的單引號用於防止運行命令行的shell對第三個參數的解釋。 Java中不需要它們,因爲不再有命令行shell。只要刪除單引號。

+0

非常感謝,它的工作原理 – EagerToLearn

+0

StackOverflow沒有「謝謝」。只要接受答案:) – choroba

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(); 
     }