为什么80%的码农都做不了架构师?>>>
使用 JAVA8 运行环境可能会导致某些网络下 JAVA 应用强制走 IPv6 通道,导致无法正常访问网络。 例如 JAVA 项目构建工具 maven ,在配置好国内仓库镜像的时候,明明可以通过网页访问 web 页面,并下载相应的 JAR 包; 但是,maven 却总是连接超时,无法下载项目所需的 JAR 包。
如果你碰到上面的情况,那么继续往下看。
关键字:
JAVA 应用的一个启动参数
-Djava.net.preferIPv4Stack=true // 优先走IPv4 通道
解决方案:
- 只针对某一个应用
- 自己写的程序可以这样写
System.setProperty("java.net.preferIPv4Stack" , "true");
- 在启动有 shell 或者 bat 脚本的应用中可以将参数加入其中即可,win 下一般快捷图标右击会有启动参数设置;
- 在系统或者用户级去解决问题
- 图形化方式 打开 JAVA 管理面板
在图中红色标注的地方填入如上参数即可。
- 环境变量方式
- 针对 application
JAVAWS_VM_ARGS =-Djava.net.preferIPv4Stack=true
- 针对 applet
_JPI_VM_OPTIONS =-Djava.net.preferIPv4Stack=true
这个问题在工作网络中出现的可能性比较大,我自己一开始出现这个问题一直是用手机开热点去拉去maven下的依赖包,一直是认为网络不通,就没考虑其他原因。直到一天有个同事用 JRE6 下的 maven ,同样的 mirror 他却可以拉去下来 jar 包。这便使我开始考虑起来是不是 JRE8 的原因,强迫走了 IPv6。经过测试后果然如此。 仅此记下来帮助可能会被此困扰的朋友。