升级至Open JDK17后同网段远程设备无法访问Spring Boot应用
排查Spring Boot升级JDK17后无法访问的问题
1. 确认应用绑定的IP地址
JDK17的网络栈默认行为和JDK8有差异,即便添加了-Djava.net.preferIPv4Stack=true,也要验证应用实际绑定的地址:
- 启动应用后,执行命令
netstat -ano | findstr :<你的应用端口>,查看监听IP是0.0.0.0(允许所有IPv4设备访问)、127.0.0.1(仅本地可访问)还是IPv6地址。 - 如果绑定的是
127.0.0.1,需强制指定应用绑定到所有IPv4地址:- 在
application.properties中添加配置:server.address=0.0.0.0 - 或者启动Jar时追加参数:
--server.address=0.0.0.0
- 在
2. 确保启动应用使用的是OpenJDK17
Windows双JDK环境下,容易出现启动时默认用JDK8的情况:
- 执行
java -version确认当前终端的JDK版本,若显示JDK8,需切换到OpenJDK17的bin目录执行启动命令,示例:C:\path\to\openjdk17\bin\java -Djava.net.preferIPv4Stack=true -jar your-app.jar --server.address=0.0.0.0
3. 排查防火墙与安全软件拦截
JDK17可能被Windows防火墙或第三方安全软件拦截网络请求:
- 临时关闭Windows防火墙测试是否能访问,若可以,手动添加允许该应用通过防火墙的规则。
- 检查杀毒软件是否拦截了Java程序的对外网络连接。
4. 核对应用启动日志
启动时重点查看日志中的关键信息:
- 是否有
Tomcat started on port(s): <端口号> (http) with context path ''的输出,且绑定地址为0.0.0.0。 - 是否存在端口占用、地址绑定失败等异常日志。
5. 检查端口占用情况
用netstat -ano | findstr :<你的应用端口>查看端口对应的PID,通过任务管理器确认该PID对应的程序是否为你的Spring Boot应用,若被其他程序占用则更换端口。
内容的提问来源于stack exchange,提问作者Mohsin Shabbir
相关产品推荐
相关产品推荐

