2013-10-09 156 views
2

我正在Linux/Ubuntu中工作。我想在通過我的Java代碼,它看起來像下面通過java代碼運行java程序

ProcessBuilder pb = new ProcessBuilder("/usr/lib/flume-ng/bin/flume-ng", 
             "agent", 
             "-f", 
             "/home/c4/Flume/New/ClientAgent.config", 
             "-n", 
             "clientAgent"); 
    pb.start(); 

,但我得到unreported exception java.io.IOException; must be caught or declared to be thrown pb.start();作爲錯誤輸出運行的過程。請告訴我如何運行我的過程。謝謝。

+1

請仔細閱讀本教程:http://docs.oracle.com/javase/tutorial/essential/exceptions/handling.html –

+0

由於start方法拋出IOException,你需要或者把它們放在try catch塊或者添加拋出IOException來擺脫問題 –

回答

4

它告訴你的start()方法可以拋出一個異常,並you have to deal with it。您可以:

  1. 捕獲它並記錄或以其他方式處理它,或
  2. 聲明你的方法可能拋出此異常,並讓上層方法堆棧處理它(使用這兩個選項)

Exception對象是檢查,這意味着編譯器關心它,你需要太(但太大的痛苦是的)。其他例外是​​未檢查,這意味着您不必擔心。編譯器也不會擔心(例如OutOfMemoryError - 請注意,我在這裏混合了一些異常術語,因爲它有點複雜)。

2

因爲,IOException檢查例外,你需要或者catch

try { 
    pb.start(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

或宣佈這樣做外層方法throw它。

public void yourMethod() throws IOException {