3

JSchを実装して、リモートのWindowssftpサーバーからLinuxにファイルを取得しようとしています。

Session session = null;
    Channel channel = null;
    ChannelSftp channelSftp = null;
        try{
           JSch jsch = new JSch();
           session = jsch.getSession("userName","hostName",22);
           session.setPassword("password");
           java.util.Properties config = new java.util.Properties();
           config.put("StrictHostKeyChecking", "no");
          session.setConfig(config);
          session.connect();
          System.out.println(session.sendKeepAliveMsg());
          channel = session.openChannel("sftp");
          channel.connect();
         }catch(Exception e){
               e.printstacktrace();
         }

このコードの実行中に次の例外が発生します。

com.jcraft.jsch.JSchException: java.io.IOException: inputstream is closed
    at com.jcraft.jsch.ChannelSftp.start(ChannelSftp.java:288)
    at com.jcraft.jsch.Channel.connect(Channel.java:152)

私がデバッグしたとき、私は見つけました:

start();

Channelクラスのメソッドが例外をスローしています。とにかくこれを防ぐことができますか?何もせずにメソッドが存在する理由がわかりません。

4

1 に答える 1

2

接続する前に、チャンネルをChannelSftにキャストしてみてください。

Channel channel = session.openChannel("sftp");
ChannelSftp channelSftp = (ChannelSftp) channel;
channelSftp.connect();
于 2013-02-07T12:15:03.287 に答える