2012-04-10 60 views
4

我是在Windows XP上的Eclipse中工作的新手程序員,我需要運行多個進程(這將成爲多計算機系統的模擬)。我最初的hackup將多個線程用於多個類,但現在我試圖用進程替換線程。使用ProcessBuilder運行.java文件

從我的閱讀中,我已經瞭解到ProcessBuilder是要走的路。我已經嘗試了很多很多版本的輸入,你看下面,但不能爲我的生活弄清楚如何正確使用它。我試圖運行我以前創建的.java文件作爲類(我已修改)。我最終做了一個虛擬test.java來確保我的進程正常工作 - 它唯一的功能是打印它的運行。

我的兩個文件的代碼如下。我正確使用ProcessBuilder嗎?這是讀取我的子進程輸出的正確方法嗎?任何幫助將非常感激。

  • 大衛

編輯:解決的辦法是聲明的ProcessBuilder( 「java.exe的」, 「 - CP」, 「賓」, 「Broker.test」);

主要過程

package Control; 
import java.io.*; 
import java.lang.*; 

public class runSPARmatch { 

/** 
* @param args 
*/ 
public static void main(String args[]) { 
    try {  
     ProcessBuilder broker = new ProcessBuilder("javac.exe","test.java","src\\Broker\\"); 
     Process runBroker = broker.start(); 

     Reader reader = new InputStreamReader(runBroker.getInputStream()); 
     int ch; 
     while((ch = reader.read())!= -1) 
      System.out.println((char)ch); 
     reader.close(); 

     runBroker.waitFor(); 

     System.out.println("Program complete"); 

    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (InterruptedException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

}

package Broker; 

public class test { 
    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     System.out.println("This works"); 
    } 
} 

回答

4

您正在呼籲的.java文件Java編譯器,這將不會運行的類。你可能想要做的是在你的.class文件上運行java.exe。 (即類似於「java.exe -cp ./bin broker.test」,假設你的類文件在./bin中)

+1

結束工作的確切語法是ProcessBuilder(「java.exe」,「 - cp 」, 「賓」, 「Broker.test」)。謝謝! – 2012-04-10 18:59:49

+0

如果我的Broker.test依賴於另一個jar,那麼我如何將這個jar添加到ProcessBuilder中? – 2013-08-21 10:17:47

+0

我明白了。使用ProcessBuilder(「java.exe」,「 - cp」,「bin:example.jar」,「Broker.test」) – 2013-08-21 10:24:20

相關問題