2015-01-08 175 views
1

我在JEK 1.7_51上使用RHE16上的Jsch 0.1.51。同時使會話到遠程計算機我收到的例外是:.JSchException:數據包損壞

com.jcraft.jsch.JSchException: Packet corrupt 
     at com.jcraft.jsch.Session.start_discard(Session.java:1049) 
     at com.jcraft.jsch.Session.read(Session.java:919) 
     at com.jcraft.jsch.UserAuthNone.start(UserAuthNone.java:56) 
     at com.jcraft.jsch.Session.connect(Session.java:389) 
     at com.jcraft.jsch.Session.connect(Session.java:183) 
     at TestSFTP.checkException(TestSFTP.java:130) 
     at TestSFTP.moveFileToDir(TestSFTP.java:78) 
     at TestSFTP.main(TestSFTP.java:73) 

相同的代碼工作正常使用RHEL 5,任何機構可以提供一些建議..謝謝

使用的代碼是:

Session session  = null; 
ChannelSftp channelSftp = null; 
JSch jsch = new JSch(); 

session = jsch.getSession(this.sftpUser,this.sftpHost,this.sftpPort); 

Properties config = new Properties(); 
config.put("StrictHostKeyChecking", "no"); 
session.setConfig(config); 
session.setPassword(this.sftpPassword); 
session.connect(); 
channelSftp = (ChannelSftp)session.openChannel("sftp"); 
channelSftp.connect(); 

我在session.connect()上得到錯誤;

+0

請顯示一些代碼。 – Chilion

+0

代碼剛剛添加問題本身。 Thanx觀看 –

+0

只需知道問題是在RHEL 6 64位上的JDK 32位。我無法更改我的平臺和JDK ..是否Jsch爲這些問題提供了一些解決方法..? –

回答

2

如果您嘗試連接已存在的會話,則會發生此異常。解決方法是關閉會話,然後開始新的會話。這幫助了我。發現從該網站一些幫助:

http://flyingjxswithjava.blogspot.com/2015/03/comjcraftjschjschexception-packet.html

從網站引用要點理解這個問題:

  • ,在會話重複使用在一個循環,在會話發生此異常有意斷開或由於超時而斷開連接並需要重新連接。

  • 引發此類異常的原因是,第一次會話連接到遠程站點時,爲會話生成一個稱爲數據包的隨機數。

  • 當線程有1小時的睡眠時間時,由於某段時間沒有活動,會話會自動斷開連接。

  • 當會話斷開時,數據包丟失。

  • 當會話嘗試重新連接時,它無法找到數據包,因此拋出異常。