Java连接FTP服务器上传文件报错

问题描述

如标题描述的那样,借用同事的工具类,用来上传文件到FTP上面。我在连接FTP服务器上传文件时报错,为什么要标明时上传呢,请看报错:
在这里插入图片描述
注意红框区域,可以明显知道,我是成功连接到FTP服务器上的,而且切换目录成功了。但上传文件时却报错连接超时?问题在哪里?
我用的依赖:

		<dependency>
            <groupId>commons-net</groupId>
            <artifactId>commons-net</artifactId>
            <version>1.4.1</version>
        </dependency>

问题排查

防火墙未关闭?

网上有人说是防火墙未关闭,可我的没开过
在这里插入图片描述
服务器上是关的?也不可能啊。同事访问是正常的。

没进入被动模式?

这就更不可能了
在这里插入图片描述
有人说进入被动模式的位置应该要在连接之前,如果你点开enterLocalPassiveMode方法,你就知道这是不对的了。至少不是我这个问题的解决方案。
在这里插入图片描述
就是简单设置了三个值而已

断点调试

还是断点打起来,从报错开始看

java.net.ConnectException: Connection timed out: connect
	at java.net.DualStackPlainSocketImpl.connect0(Native Method)
	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:589)
	at java.net.Socket.connect(Socket.java:538)
	at java.net.Socket.<init>(Socket.java:434)
	at java.net.Socket.<init>(Socket.java:211)
	at org.apache.commons.net.DefaultSocketFactory.createSocket(DefaultSocketFactory.java:53)
	at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:513)
	at org.apache.commons.net.ftp.FTPClient.__storeFile(FTPClient.java:388)
	at org.apache.commons.net.ftp.FTPClient.storeFile(FTPClient.java:1388)

简化一下,看到出错的问题是在这里。

DefaultSocketFactory.createSocket(DefaultSocketFactory.java:53)
FTPClient._openDataConnection_(FTPClient.java:513)
FTPClient.__storeFile(FTPClient.java:388)
FTPClient.storeFile(FTPClient.java:1388)

断点调试进去,从下向上看一下

第一个是实际调用的存储方法 如下
在这里插入图片描述
再点进去定位到这里,这里就是与服务器建立数据连接
在这里插入图片描述
再进去 ,定位给到以下代码段,该段代码的作用是,以被动模式创建本机与服务器端的套接字连接
在这里插入图片描述
到这里已经就感觉到有点不对了,为什么创建连接会不对呢
再进去 看到以下代码
在这里插入图片描述
这里问题就很明显了,创建套接字出错。问题是为什么出错,检查下参数,端口也没被占用啊。。。
在这里插入图片描述
然后叫来同事跟我一起断点调试。。。

解决

跟同事比对之后 发现是依赖版本的不对。。。下次借别人的工具类,一定要看清楚对应的依赖和版本。。。他用的是。。。

        <dependency>
            <groupId>commons-net</groupId>
            <artifactId>commons-net</artifactId>
            <version>3.3</version>
        </dependency>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值