首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ProcessBuilder不会触发

ProcessBuilder不会触发
EN

Stack Overflow用户
提问于 2012-11-14 06:44:27
回答 1查看 229关注 0票数 0

我有一个进程构建器,但由于某些原因它不能工作..我有一个名为"test.jar“的jar文件,它有一个类,代码如下。

代码语言:javascript
运行
复制
package me.thefiscster510.debugger;

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

然后我有另一个jar,它有一个按钮,这是按钮事件处理程序。

代码语言:javascript
运行
复制
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();
        }

    }

}

代码不做任何事情..就像,它就躺在那里..不会在控制台中放任何东西,什么都不会..有人能告诉我这是怎么回事吗?

EN

回答 1

Stack Overflow用户

发布于 2014-03-05 07:55:38

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13370202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档