我有一个进程构建器,但由于某些原因它不能工作..我有一个名为"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,它有一个按钮,这是按钮事件处理程序。
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();
}
}
}
代码不做任何事情..就像,它就躺在那里..不会在控制台中放任何东西,什么都不会..有人能告诉我这是怎么回事吗?
发布于 2014-03-05 07:55:38
如果您使用的是Java7,则应该在启动进程之前调用pb.inheritIO()
。这会将进程的标准输出和错误重定向到父java进程的流。然后,您应该会看到它输出到控制台。
如果您没有使用Java7,那么您需要通过调用p.getInputStream()
捕获子进程的标准输出,然后您可以将该数据复制到您的标准输出中。最简单的方法是使用IOUtils.copy
https://stackoverflow.com/questions/13370202
复制相似问题