Channel sftpChannel = session.openChannel("sftp");
...
InputStream inputStream = sftpChannel.get("/home");
Исключение в потоке "main" java.lang.RuntimeException: некомпилируемый исходный код - ошибочный тип sym: com.jcraft.jsch.Channel.get at teste_ls.SSHReadFile.main (SSHReadFile.java:22)
Ваша непосредственная проблема заключается в том, что вы объявили переменную sftpChannel
в виде простого значения Channel
вместо ChannelSftp
.Таким образом, вы можете вызывать только те методы, которые определены классом Channel
.Channel
не имеет метода с именем get()
, поэтому вы получаете ошибку компилятора.
Вы хотите вызвать ChannelSftp.get()
, поэтому вы должны определить переменную как ChannelSftp
:
ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp");
...
InputStream inputStream = sftpChannel.get("/home");
Следующая проблема, с которой вы, вероятно, столкнетесь, заключается в том, что "/ home", вероятно, является каталогом, и я не думаю, что вы можете получить каталог в качестве входного потока.Если вы пытаетесь получить список файлов в каталоге, звоните SftpChannel.ls()
:
for (LsEntry entry : (Vector<LsEntry>) SftpChannel.ls("/home")) {
System.out.println(entry.getFilename());
...
}