Java Apache Commons Net FTPClient将不执行listFiles()

Java Apache Commons Net FTPClient将不执行listFiles(),java,ftp,ftps,apache-commons-net,Java,Ftp,Ftps,Apache Commons Net,我正在修改以前使用我自己编写的FTPS库的一些代码。我被要求开始使用ApacheCommonsNet库(主要是FTPClient和FTPSClient),但我在列出文件清单时遇到了问题。我已经阅读了其他问题,这不是enterLocalPassiveMode问题(),因为我在连接之后使用它,但在登录之前。同样的代码在我设置的测试服务器(也使用ApacheFTP)上运行良好,但在我需要它的服务器上不起作用 我也尝试过使用“PBSZ 0”和“PROT p”命令,但它们没有在远程系统上实现 502 PB

我正在修改以前使用我自己编写的FTPS库的一些代码。我被要求开始使用ApacheCommonsNet库(主要是FTPClient和FTPSClient),但我在列出文件清单时遇到了问题。我已经阅读了其他问题,这不是enterLocalPassiveMode问题(),因为我在连接之后使用它,但在登录之前。同样的代码在我设置的测试服务器(也使用ApacheFTP)上运行良好,但在我需要它的服务器上不起作用

我也尝试过使用“PBSZ 0”和“PROT p”命令,但它们没有在远程系统上实现

502 PBSZ Command not implemented.
502 PROT Command not implemented.
代码:

我已尝试显式指定目录并使用默认值:

FTPFile[] ftpfiles = ftpsclient.listFiles();
FTPFile[] ftpfiles = ftpsclient.listFiles(REMOTE_DIR);
。。。但两者的结果相同。这是调试信息的输出:

220 FTPS (Version  Thu Dec 10 17:23:00 2015) server ready.
USER ****
331 Password required for ****.
PASS ****
230 User **** logged in.
TYPE I
200 Type set to I
CWD outbound/directory
250 CWD Command successful.
PWD
257 "/usr/path/to/outbound/directory" is current directory.
SYST
215 UNIX
PASV
227 Entering Passive Mode (XX,XX,XX,XX,24,140) ***Edit: port 6284
LIST
150 Opening data connection for '/bin/ls'.
然后,使用此堆栈跟踪在30秒后超时:

Stack Trace: org.apache.commons.net.ftp.FTPConnectionClosedException: Connection closed without indication.
    at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:317)
    at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:294)
    at org.apache.commons.net.ftp.FTP.getReply(FTP.java:692)
    at org.apache.commons.net.ftp.FTPClient.completePendingCommand(FTPClient.java:1813)
    at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3308)
    at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3271)
    at org.apache.commons.net.ftp.FTPClient.listFiles(FTPClient.java:2930)
我已经检查了防火墙设置,允许该主机通过端口990和6200-6300进行连接

我也读过,但这两本书对我的问题都没有帮助

编辑:FTPClient似乎无法识别数据通道。我试图上传一个文件而不是列表,但在“150打开数据连接”消息后,它就消失了。我已经确认,从PASV命令分配给数据连接的端口没有被防火墙阻止


有什么想法吗?

我把它修好了。原来我在做一个目录列表,路径无效。Apache FTP没有返回错误消息,而是关闭了连接。不知道为什么。无论如何,它现在正在工作。

您可以使用被动模式从同一台机器连接到同一台服务器上的独立FTP客户端吗?我目前正在尝试使用cURL进行连接,但本地机器是我控制有限的AIX服务器。
Stack Trace: org.apache.commons.net.ftp.FTPConnectionClosedException: Connection closed without indication.
    at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:317)
    at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:294)
    at org.apache.commons.net.ftp.FTP.getReply(FTP.java:692)
    at org.apache.commons.net.ftp.FTPClient.completePendingCommand(FTPClient.java:1813)
    at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3308)
    at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3271)
    at org.apache.commons.net.ftp.FTPClient.listFiles(FTPClient.java:2930)