0

当我尝试使用“com.enterprisedt.net.ftp.ssh.SSHFTPClient”类(edtFTPj/PRO - 商业 Java 文件传输客户端)连接到 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
4

1 回答 1

0

我认为图书馆本身有问题。并发问题。当您尝试同时(在同一毫秒内)打开许多连接时,例如,当您使用多个线程来执行此操作时,我可以一致地重现此和其他随机错误。即使您使用多个不同的 SSHFTPClient 实例,也会发生这种情况。我认为这些类中应该有一个静态的东西。

我必须使用第三个变量来同步任何 SSHFTPClient 实例的访问,如下所示:

final static String sincronizadorUnico = "";

    synchronized (sincronizadorUnico) {
        // use the code to connect
    }

它会起作用的。我会将错误报告给图书馆。我正在使用 7.1.0 版本的库。

于 2021-10-07T16:35:30.150 回答