entry
равно нулю, поскольку его значение содержится только в цикле for и фактически объявляется дважды (один раз с областью частного класса, один раз с локальной областью внутри цикла for).
Я предлагаю исправить объявление переменных и проверить подключение и печать имени файла. Если это все еще не работает, попробуйте это в известной конечной точке рабочей пружины. Если он распечатывает каталог должным образом, перейдите к своей конечной точке и повторите попытку. Это поможет сузить сферу вашей проблемы.
Я использовал приведенный ниже код для подключения и печати имен файлов в течение последних нескольких лет, и он в значительной степени основан на примере кода, предоставленного JSCH в то время:
JSch jsch = new JSch();
Session session;
session = jsch.getSession(username, hostname, port);
session.setConfig("StrictHostKeyChecking", "no");
session.setPassword(password);
session.connect();
Channel channel = session.openChannel("sftp");
channel.connect();
ChannelSftp sftpChannel = (ChannelSftp) channel;
//List our files within the directory
Vector vv = sftpChannel.ls(srcDir);
if (vv != null) {
LOGGER.debug("We have a file listing!");
for (int ii = 0; ii < vv.size(); ii++) {
Object obj = vv.elementAt(ii);
if (obj instanceof ChannelSftp.LsEntry) {
LOGGER.debug("[" + ((ChannelSftp.LsEntry) obj).getFilename() + "]");
if (ii < 1) { // empty directory contains entries for . and ..
continue;
}
String filename = ((ChannelSftp.LsEntry) obj).getFilename();
filenames.add(filename);
LOGGER.debug("filename is: {}", filename);
....