Приложение не выйдет после загрузки файла с помощью scala-ssh

Я использую scala-ssh 0.7.0 для загрузки файла с удаленного сервера.

Сама загрузка кажется успешной (я могу найти загруженный файл). Вот последняя часть вывода журнала:

16:14:43.824 [main] TRACE net.schmizz.sshj.xfer.LoggingTransferListener - передано 100% log-file.txt 16:14:43.824 [main] ИНФОРМАЦИЯ net.schmizz.sshj.common.StreamCopier - 44,82421875 КиБ, переданных за 1,572 секунды (28,514134064885496 КиБ / с) 16:14:43,825 [main] DEBUG net.schmizz.sshj.xfer.scp.SCPEngine - Удаленная согласованная передача выполнена 16:14:43.826 [main] DEBUG net.schmizz.sshj.xfer.scp.SCPEngine - Сигнализация: передача выполнена 16:14:43.826 [main] TRACE net.schmizz.sshj.transport.Encoder - Пакет кодирования #10: 5e 00 00 00 00 00 00 00 01 00 16:14:43.826 [main] DEBUG net.schmizz.sshj.connection.channel.Window$Remote - потребляет от 1 до 2097148 16:14:44.220 [читатель] TRACE net.schmizz.sshj.transport.Decoder - полученный пакет № 14: 62 00 00 00 00 00 00 00 0b 65 78 69 74 2d 73 74 61 74 75 73 00 00 00 00 00 16:14:44.221 [читатель] TRACE net.schmizz.sshj.transport.TransportImpl - полученный пакет CHANNEL_REQUEST 16:14:44.221 [читатель] DEBUG net.schmizz.sshj.connection.channel.direct.SessionChannel - получен запрос chan для exit-status 16:14:44.222 [читатель] TRACE net.schmizz.sshj.transport.Decoder - полученный пакет № 15: 60 00 00 00 00 16:14:44.222 [читатель] TRACE net.schmizz.sshj.transport.TransportImpl - Полученный пакет CHANNEL_EOF 16:14:44.222 [читатель] DEBUG net.schmizz.sshj.connection.channel.direct.SessionChannel - получено EOF 16:14:44.223 [читатель] TRACE net.schmizz.sshj.transport.Decoder - получено пакет #16: 61 00 00 00 00 16:14:44.223 [читатель] TRACE net.schmizz.sshj.transport.TransportImpl - полученный пакет CHANNEL_CLOSE 16:14:44.223 [основной] DEBUG net.schmizz.sshj.connection.channel.direct.SessionChannel - отправка закрыть 16: 14: 44.223 [читатель] DEBUG net.schmizz.sshj.connection.channel.direct.SessionChannel - закрыто 16:14:44.224 [main] TRACE net.schmizz.sshj.transport.Encoder - пакет кодирования #11: 61 00 00 00 00 16:14:44.225 [основной] DEBUG net.schmizz.concurrent.Promise - ожидается <> 16:14:44.225 [читатель] DEBUG net.schmizz.sshj.connection.ConnectionImpl - Забыть session канал (#0) 16:14:44.225 [читатель] DEBUG net.schmizz.concurrent.Promise - установка <> для SOME

Мой код очень прост:

import com.decodified.scalassh._

val sshClient = new SshClient(new HostConfig(login = PasswordLogin(userName, SimplePasswordProducer(password)), hostName))


sshClient.download(filePath, targetDirectory)

Теперь, хотя загрузка успешно завершена, а выполнение приложения продолжается после команды загрузки, само приложение не завершается.

Есть идеи?

1 ответ

Решение

Кажется, за этим стоит неявное преобразование в RichSshClient. Я избежал неявного преобразования в RichSshClient, создав новый класс - SshClientEnhanced, который расширяет SshClient с помощью ScpTransferable. Вызов метода загрузки для экземпляра SshClientEnhanced работает нормально.

Другие вопросы по тегам