解决了一个 java7 发送 ftp 文件失败的问题
近日写程序,使用 apache common net 里的 FTPClient,往 FTP 服务器上,上传文件,以至失败。纠结了两三天,不能解决。
后上网 google 搜索,发现以下网址提到着这件事情:
Java 7 prevents FTP transfers on Windows Vista and 7 if firewall is on. Any ideas?
里面提到,这是 java 的一个 bug(Submit Date, 11-AUG-2011 ):
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7077696
但是 Sun 公司标注这是一个低级别的 bug。
具体原因是:在安装有 IPv6 和 IPv4 的计算机上,会使用一种 IPv6 模拟的 IPv4(The only difference between JDK7 and older releases is that the JDK is using IPv6 sockets when IPv6 is enabled and so IPv4-mapped IPv6 addresses are used),而 windows 防火墙会把这种模拟的 IPv4 数据挡住。
我很奇怪,它只挡住了 FTP 命令 PASV, 对于FTP 登录操作什么的,没有挡住。
最后,Sun 公司给出解决方法:加一个 JVM 启动参数:
run with -Djava.net.preferIPv4Stack=true (which disables IPv6 and uses AF_INET sockets exclusively)
经测试,确实有效。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
· 分享4款.NET开源、免费、实用的商城系统