Java читает вывод команды Oracle EXP - PullRequest
1 голос
/ 24 июня 2011

Мне нужно запустить команду Oracle EXP через программу Java и напечатать где-нибудь вывод команды.

Команда EXP верна, файл дампа создается правильно, когда я выполняю свой код Java, но я 'У меня возникли некоторые проблемы при получении вывода.

Это фрагмент, очень похожий на тот, который я использую для чтения вывода:

String line;
String output = "";
try {
    Process p = Runtime.getRuntime().exec(myCommand);
    BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
    while ((line = input.readLine()) != null) {
        output += (line + '\n');
    }
    input.close();
}
catch (Exception ex) {
    ex.printStackTrace();
}
System.out.println(output);

Как я уже сказал, команда выполнена правильновыполнено (проверено с помощью сгенерированного файла дампа), но на моей консоли ничего не появляется, и мои программы на Java также не завершаются.

Тот же код работает отлично, если я использую другую команду, например "ls -l"из "exp ...".

Ответы [ 2 ]

3 голосов
/ 24 июня 2011

Возможно, exp записывает в стандартный вывод error вместо стандартного вывода.

Попробуйте использовать p.getErrorStream() вместо getInputStream()

1 голос
/ 24 июня 2011

Как сказал a_horse_with_no_name, возможно, буфер потока ошибок заполнен и, следовательно, блокирует выполнение программы.

Либо попробуйте запустить Thread, чтобы также прочитать поток ошибок, либо использовать ProcessBuilder класс для перенаправления потока ошибок на стандартный вывод (который вы уже прочитали).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...