ProcessBuilder不会开火

时间:2012-11-13 22:44:27

标签: java process environment-variables processbuilder

我有一个流程构建器,由于某种原因它不起作用..我有一个名为“test.jar”的jar文件它有一个类,带有这个代码..

package me.thefiscster510.debugger;

public class Main {
    public static void main(String[] args){
        System.out.print(System.getenv("APPDATA"));
        System.exit(0);
    }
}

然后我有另一个有按钮的jar,这是按钮Event Handler ..

public class buttonhandler implements ActionListener{

    @Override
    public void actionPerformed(ActionEvent arg0){
        // TODO Auto-generated method stub
        ProcessBuilder pb;
        try {
            pb = new ProcessBuilder("java", "-jar", "test.jar");
            pb.environment().put("APPDATA", textfield.getText() == null ? System.getenv("APPDATA") : textfield.getText());
            Process p = pb.start();
        }catch(IOException e){
            e.printStackTrace();
        }

    }

}

代码没有做任何事情..比如,它只是坐在那里..没有在控制台中放任何东西,没什么..有人可以告诉我发生了什么事吗?

1 个答案:

答案 0 :(得分:1)

如果您使用的是Java7,则应在开始此过程之前调用pb.inheritIO()。这会将进程的标准输出和错误重定向到父进程的流。然后你应该看到它输出到控制台。

如果您不在Java7上,则需要通过调用p.getInputStream()来捕获子进程的标准输出。然后,您可以将该数据复制到标准输出。最简单的方法是使用IOUtils.copy