Мне нужно получить сообщение об ошибке при запуске любой команды с помощью JSch.Как обнаружить ошибку (как в «Справочном не найдена», «Слушатель TNS потерял контакт» и т. Д.) В JSch?
В настоящее время я использую код ниже, чтобы получить вывод команды tail
, но если файл не существует, я должен получить ошибку как вывод (который я не получаю).
public String getOutput() {
LOGGER.debug("[getOutput]");
StringBuffer output = new StringBuffer();
InputStream in = null;
if (channel != null && channel.isConnected()) {
try {
in = channel.getInputStream();
byte[] tmp = new byte[1024];
while (true) {
LOGGER.debug("[getOutput] in while");
while (in.available() > 0) {
LOGGER.debug(in.available());
int i = in.read(tmp, 0, 1024);
if (i < 0)
break;
output.append(new String(tmp, 0, i));
}
if (channel.isClosed()) {
LOGGER.debug("[getOutput] Channel is closed, so breaking while loop");
break;
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
channel.disconnect();
}
} else {
System.out.println("Channel is disconnected");
}
return output.toString();
}
Есть ли способ получить сообщение об ошибке?
Заранее благодарен.
Что вы подразумеваете, прочитав параллельно? –
Я имею в виду, что вы не можете просто дублировать цикл 'while', который у вас есть для' getInputStream' для 'getErrStream'. Вам нужно иметь один цикл, читающий с обоих (чтение того, что доступно в одном, чтение того, что доступно во втором, ожидание новых данных и повторение). –
Прохладный, спасибо за ваш ответ :) –