在项目中使用commons-net-1.4.1.jar实现FTP文件的下载,在windows xp上运行正常,可是放到linux上,却出现问题,程序运行到 FTPClient.listFiles()或者FTPClient.retrieveFile()方法时,就中止在那里,什么反应都没有,出现 假死状态。linux
google一把,发现不少人也出现了此类问题,最终在一个帖子里找到了解决办法。在调用这两个方法以前,调用 FTPClient.enterLocalPassiveMode();这个方法的意思就是每次数据链接以前,ftp client告诉ftp server开通一个端口来传输数据。为何要这样作呢,由于ftp server可能每次开启不一样的端口来传输数据,可是在linux上,因为安全限制,可能某些端口没有开启,因此就出现阻塞。OK,问题解决。 web
另外,若是程序部署在weblogic上, 也有可能出现一些问题,为何,由于weblogic本身也有commons-net包,若是weblogic的jar包版本低于你使用的版本,就设置weblogic 的classpath,优先加载工程里的jar包。