读取作为进程执行的类的输出

时间:2011-11-09 12:29:52

标签: java process

我使用Runtime.getRuntime()。exec(test.class)创建进程并启动test.class文件。

的Test.class:

public class test {
    public static void main(String[] args) {
        doReturn();
    }

    public static String doReturn() {
        System.out.println("printed output");
        return "returned output";
    }
}

在启动此过程的Java应用程序中,我想检索此test.class的输出

我使用的代码如下:

Process proc = null;
String[] cmd = { "java", "test"};
proc = Runtime.getRuntime().exec(cmd);

InputStream inputStream = proc.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

String line;
while ((line = bufferedReader.readLine()) != null)
{
    System.out.println(line);
}

这段代码不起作用:没有打印任何内容,我的流程的退出值为1。

=>我应该如何修改它(和/或修改test.class)以将“打印输出”返回到我的java应用程序? =>是否可以返回“返回的输出”?

(我是Java的新手,所以请你在答案中详细说明!Thx!)

2 个答案:

答案 0 :(得分:0)

我不知道你想做什么但是试图删除.class

String[] cmd = { "java", "test"};

答案 1 :(得分:0)

尝试commons exec库。它简化了许多代码,否则你将不得不写。您需要在另一个线程上捕获进程的输入流。在同一个线程上执行它有一些问题..这里的一些信息:

http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html

公共高管图书馆在这里: http://commons.apache.org/exec/