当我试图使用"com.enterprisedt.net.ftp.ssh.SSHFTPClient"类(edtFTPj/PRO --一个商业的文件传输客户端)连接到SFTP的远程主机时,我得到了异常“消息存储已达到EOF"。
我能够用相同的代码成功地连接到SFTP的另一个远程主机。
是否有任何特定于特定主机的配置导致了问题?如果是这样的话,有什么办法可以证实吗?除了这条异常消息之外,我没有任何其他日志。但是,我可以更改代码以尝试任何建议的调试选项。
请注意,我不能使用其他SFTP库,因为我的现有代码已经在使用这个库了。
com.enterprisedt.net.j2ssh.authentication.AuthenticationProtocolException: Failed to read messages
at com.enterprisedt.net.j2ssh.authentication.AuthenticationProtocolClient.a(AuthenticationProtocolClient.java:265)
Caused by: com.enterprisedt.net.j2ssh.transport.MessageStoreEOFException: The message store has reached EOF
at com.enterprisedt.net.j2ssh.transport.SshMessageStore.getMessage(SshMessageStore.java:177)
at com.enterprisedt.net.j2ssh.transport.SshMessageStore.getMessage(SshMessageStore.java:110)
at com.enterprisedt.net.j2ssh.authentication.AuthenticationProtocolClient.a(AuthenticationProtocolClient.java:261)
... 31 more发布于 2021-10-07 16:35:30
我认为图书馆本身有问题。并发问题。当您尝试同时打开多个连接(在相同毫秒内)时,我可以始终如一地再现此错误和其他随机错误,例如,当您使用多个线程进行操作时。即使使用了几个不同的SSHFTPClient实例,也会发生这种情况。我认为在这些类中应该有一个静态的东西。
我必须使用第三个变量同步访问任何SSHFTPClient实例,如下所示:
final static String sincronizadorUnico = "";
synchronized (sincronizadorUnico) {
// use the code to connect
}它会起作用的。我会把错误报告给图书馆。我正在使用7.1.0版本的库。
https://stackoverflow.com/questions/39145515
复制相似问题