我尝试使用此代码:
SshParameters参数=新的SshParameters(ftpHostname,ftpUsername,ftpPassword); SftpConfiguration config = SftpConfiguration.defaultConfiguration();
// create Sftp instance
Sftp sftp = new Sftp(params,config);
// capture FTP related events
sftp.addSftpListener(new DeliverySftpListener());
// establish secure FTP connection
sftp.connect();
字符串serverFileName =“ FileInServer.txt”;
sftp.upload("src/test/java/com/filecreation/testfile/"+fileName+".txt",serverFileName);
Session session = null;
JSch jsch=new JSch();
Properties configone = new Properties();
configone.put("StrictHostKeyChecking", "no");
configone.put("PreferredAuthentications",password);
JSch.setConfig(configone);
session=jsch.getSession("uname", "hostname", port);
ChannelSftp channel = (ChannelSftp) session.openChannel("sftp");
if (!channel.isConnected())
channel.connect(5000);
channel.chmod(511,"/home/abc/FileInServer.txt");
channel.disconnect();
session.disconnect();
...
我收到以下异常: com.jcraft.jsch.JSchException:会话已关闭 在com.jcraft.jsch.Session.openChannel(Session.java:861) 在com.visa.apps.comms.delivery.ftp.FileCreation.getListing(FileCreation.java:229) 在com.visa.apps.comms.delivery.ftp.FileCreation.main(FileCreation.java:44)
答案 0 :(得分:1)
您可能忘记了连接到服务器。至少您的代码段中没有会话连接。
作为草图,其工作方式类似于
Session session = jsch.getSession("uname", "hostname", port);
session.connect();
Channel channel=session.openChannel("sftp");
channel.connect();
ChannelSftp c=(ChannelSftp)channel;