читать выходные данные из класса, выполняемого как процесс - PullRequest
1 голос
/ 09 ноября 2011

Я использую 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";
    }
}

inJava-приложение, запускающее этот процесс, я хотел бы получить выходные данные этого 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);
}

Этот фрагмент кода не работает:ничего не печатается, и я получаю значение Exitvalue 1 для моего процесса.

=> Как мне изменить его (и / или изменить test.class), чтобы он возвращал «напечатанный вывод» в мое Java-приложение?=> Можно ли также вернуть «возвращенный результат»?

(Я новичок в Java, поэтому не могли бы вы быть очень подробным в своих ответах! Спасибо!)

Ответы [ 2 ]

0 голосов
/ 09 ноября 2011

Попробуйте библиотеку exec commons.Это упрощает много кода, который в противном случае вам пришлось бы писать.Вам нужно будет захватить входной поток из процесса в другом потоке.Есть проблемы с выполнением этого в том же потоке .. Некоторая информация здесь:

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

И библиотека exec commons здесь: http://commons.apache.org/exec/

0 голосов
/ 09 ноября 2011

Я не знаю, что вы хотите сделать, но попробуйте удалить .class

String[] cmd = { "java", "test"};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...