我有一个流程构建器,由于某种原因它不起作用..我有一个名为“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();
}
}
}
代码没有做任何事情..比如,它只是坐在那里..没有在控制台中放任何东西,没什么..有人可以告诉我发生了什么事吗?
答案 0 :(得分:1)
如果您使用的是Java7,则应在开始此过程之前调用pb.inheritIO()
。这会将进程的标准输出和错误重定向到父进程的流。然后你应该看到它输出到控制台。
如果您不在Java7上,则需要通过调用p.getInputStream()
来捕获子进程的标准输出。然后,您可以将该数据复制到标准输出。最简单的方法是使用IOUtils.copy