You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DNS刷新后Java服务启动报java.net.SocketException: Unresolved address求助

问题分析与解决方案

从你提供的错误日志和控制台信息来看,核心问题很明确:Jetty服务器启动时尝试绑定到app.domain.com:8081,但无法解析该域名对应的IP地址,进而抛出java.net.SocketException: Unresolved address错误。Apache等服务能恢复,是因为它们大概率绑定的是0.0.0.0(监听所有网卡)或已提前解析好的IP,而Java服务器是在启动阶段实时解析域名,所以受DNS异常的影响更直接。

下面是具体的排查和解决步骤:

1. 先验证本地域名解析是否正常

在服务器上执行以下命令,确认app.domain.com能否正确解析到你设置的目标IP:

# 查看域名解析结果
nslookup app.domain.com
# 或者用ping测试解析(按Ctrl+C停止)
ping app.domain.com

如果解析结果不是正确IP,或者提示无法解析,说明本地DNS缓存还存着旧记录,需要清理:

  • Windows系统:打开命令提示符执行
    ipconfig /flushdns
    
  • Linux/macOS系统:
    # Linux(systemd环境)
    sudo systemd-resolve --flush-caches
    # macOS
    sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
    

2. 修改Java服务器的绑定地址配置

如果域名解析一时无法完全同步,可以先绕开域名解析,直接绑定到IP:
找到你的Jetty配置文件(比如jetty.xml)或应用自定义的配置项,把绑定地址从app.domain.com改成服务器的具体IP或者0.0.0.0(0.0.0.0表示监听所有网卡):

<!-- 原配置 -->
<Set name="host">app.domain.com</Set>

<!-- 修改后:绑定到所有网卡 -->
<Set name="host">0.0.0.0</Set>
<!-- 或者绑定到服务器的内网/公网IP -->
<Set name="host">192.168.1.100</Set>

这样服务器启动时不需要依赖域名解析,直接绑定IP就能正常运行,后续DNS完全同步后再改回域名也没问题。

3. 检查本地hosts文件是否有冲突

有时候本地hosts文件的旧条目会覆盖DNS解析结果,检查以下路径的文件:

  • Linux/macOS:/etc/hosts
  • Windows:C:\Windows\System32\drivers\etc\hosts
    如果里面有app.domain.com的条目,确认对应的IP是最新的正确地址,若不正确就修改或删除该条目,保存后重新测试解析。

4. 重启网络服务(可选)

如果清理缓存后解析还是异常,可以尝试重启服务器的网络服务,确保新的DNS配置生效:

  • Linux:
    sudo systemctl restart network
    # 或者针对systemd-resolved服务
    sudo systemctl restart systemd-resolved
    
  • Windows:在控制面板找到对应网卡,禁用后重新启用。

5. 等待DNS全局同步(兜底)

虽然Apache已经恢复,但DNS更新存在延迟(取决于域名记录的TTL值),如果以上步骤都无效,可以等待10分钟到几小时,让DNS记录在全球节点同步完成后再尝试启动服务器。


内容的提问来源于stack exchange,提问作者DN0300

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:54:09