2

我在 Linux/Ubuntu 中工作。我想通过我的 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();错误输出。请告诉我如何运行我的流程。谢谢。

4

2 回答 2

4

它告诉您该start()方法可能会抛出异常,您必须处理它。您可以:

  1. 抓住它并记录它或以其他方式处理它,或
  2. 将您的方法声明为可能抛出此异常,并让堆栈更高的方法处理它(使用这两个选项)

Exception对象被检查,这意味着编译器关心它,你也需要关心它(不管那是多么痛苦)。其他异常是unchecked,这意味着您不必担心。编译器也不会担心(例如OutOfMemoryError- 请注意,我在这里混合了一些异常术语,因为它有点令人费解)。

于 2013-10-09T16:41:58.250 回答
2

因为,IOException是一个检查异常,你需要catch

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

或者throw它与声明这样做的封闭方法。

public void yourMethod() throws IOException {
于 2013-10-09T16:42:17.957 回答