0

我有一个流程构建器,但由于某种原因它不起作用..我有一个名为“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);
    }
}

然后我有另一个有按钮的罐子,这是按钮事件处理程序..

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();
        }

    }

}

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

4

1 回答 1

1

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

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

于 2014-03-04T23:55:38.130 回答