【问题标题】:Run a java program through java code通过java代码运行一个java程序
【发布时间】:2013-10-17 03:41:35
【问题描述】:

我在 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(); 作为错误输出。请告诉我如何运行我的流程。谢谢。

【问题讨论】:

标签: java ubuntu process system-calls java-communication-api


【解决方案1】:

它告诉你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 {
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-07
      • 1970-01-01
      • 1970-01-01
      • 2015-06-21
      • 1970-01-01
      • 2013-02-19
      • 2014-12-27
      相关资源
      最近更新 更多