2015-03-31 2 views
-1

Я хочу контролировать состояние моего канала, но он сохраняет печать -1. Я использовал его в коде, и он работает отлично. Он успешно передает файлы. Он должен возвращать 0, но он продолжает возвращать -1. Любая идея почему?Почему я получаю -1 как статус выхода ChannelSftp все время?

channelSftp = (ChannelSftp) session.openChannel("sftp"); 
this.timeout = session.getTimeout(); 
System.out.println(channelSftp.getExitStatus()); 
channelSftp.connect(); 
System.out.println(channelSftp.getExitStatus()); 
channelSftp.cd(path); 
System.out.println(channelSftp.getExitStatus()); 
is = channelSftp.get(filename); 
System.out.println(channelSftp.getExitStatus()); 

ответ

0

Channel.getExitStatus возвращает статус выхода канала, а не запроса предыдущего SFTP. До тех пор пока канал не будет закрыт, статус выхода не определен (это то, что -1 указует):

получает статус выхода удаленного управления, соответствующее этот канал. Статус выхода доступен только для определенных типов каналов, а только после того, как канал был закрыт (точнее, непосредственно перед закрытием канала).

Все методы, такие как ChannelSftp.connect, тем ChannelSftp.cd, и т.д., бросить исключение, когда они терпят неудачу. После их вызова нет необходимости проверять статус.

+0

Я попытался закрыть его, но все равно статус выхода -1 –

+0

Используя '.close'? Он отправляет запрос на закрытие канала на сервер. Статус выхода заполняется только после ответа сервера. Если вы вызываете '.getExitStatus' сразу после вызова' .close', он еще не будет заполнен. Во всяком случае, что вы пытаетесь сделать? –

+0

Я разрабатываю приложение, которое включает sftp с помощью jsch и для целей отладки и ведения журнала, мне нужны коды выхода. Я получил коды выхода для канала exec и даже настроил некоторые. И да, я использовал. –

Смежные вопросы