2016-09-18 89 views
0

我使用此標準代碼捕獲並顯示來自JTextArea中的應用程序的輸出。錯誤檢查已被刪除。工作正常。將數據輸入到來自Java的外部應用程序

Process proc = null; 
ProcessBuilder builder=null; 
builder = new ProcessBuilder("java","-jar", "test.jar");       
proc = builder.start(); 
Thread outputGobbler = new Thread(new StreamGobbler(proc.getInputStream(),  outputTextServer1)); 
outputGobbler.start(); 

我現在想讓用戶能夠將命令輸入到JTextField中,並將其發送迴應用程序。我已經閱讀了許多使用管道,System.out和重定向的變體,但據我所知,這些方法都沒有這樣做。應用程序的內容無法更改。如何才能做到這一點? (可以這樣做嗎?)

在此先感謝。

回答

0

想想用戶的命令作爲一個字符串:

String userCommand = "java -jar test.jar"; 
String[] s = userCommand.split(" "); 
ProcessBuilder builder = builder = new ProcessBuilder(s); 

但becareful有關用戶多餘的空格書面命令:)

+0

抱歉,我沒有寫這個問題非常好。我正在尋求幫助來編寫第二個Java應用程序,其中用戶在JTextField中輸入命令作爲應用程序測試jar的輸入。 Test.jar是一個命令行應用程序,用戶可以輸入簡單的命令。 – user3237316

+0

我認爲我的答案仍然適用。假設test.jar有一個像'help me'一樣的命令。在這種情況下,'幫助我'是第一個應用程序的輸入,應該輸入到JTextField中。因此,我的答案中的userCommand的值將是「java -jar test.jar help me」。確實'java -jar test.jar'是常量部分,JTextField的值是userCommand的動態部分。我希望我明確解釋。 –

+0

感謝您的幫助。必須有一行代碼。我試過builder.redirectOutput();和其他變體。當我發送JTextField時,沒有任何反應。 – user3237316

相關問題