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

使用IntelliJ IDEA实现Spring REST消费指南时遇UnknownHostException但网址可访问

解决Spring消费REST服务时的UnknownHostException问题

嘿,我之前跟着Spring的REST消费指南做的时候也碰到过一模一样的问题!虽然浏览器能正常访问目标地址,但Java程序就是抛出UnknownHostException,这大概率是DNS解析或网络配置差异导致的,给你几个实用的排查和解决方向:

  • 指定JVM的DNS服务器
    有时候Java虚拟机使用的DNS和浏览器/系统不一样,你可以在IDEA的运行配置里手动指定公共DNS(比如谷歌的8.8.8.8):

    1. 点击IDEA顶部的Run -> Edit Configurations
    2. 找到你的Application运行配置,在VM options输入框中添加:
      -Ddns.server=8.8.8.8
      

    保存后重新运行程序试试。

  • 检查代理配置
    如果你的机器使用了代理服务器,浏览器可能已经配置了代理,但Java程序默认不会继承这些设置:

    • 如果需要代理,在VM参数中添加代理信息(替换成你的代理地址和端口):
      -Dhttp.proxyHost=你的代理地址 -Dhttp.proxyPort=代理端口 -Dhttps.proxyHost=你的代理地址 -Dhttps.proxyPort=代理端口
      
    • 如果不需要代理,可以强制关闭系统代理:
      -Djava.net.useSystemProxies=false
      
  • 刷新本地DNS缓存
    本地DNS缓存可能过期或出错,尝试清空缓存:

    • Windows:打开命令提示符,运行 ipconfig /flushdns
    • Mac:打开终端,运行 sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
    • Linux(Ubuntu为例):运行 sudo systemd-resolve --flush-caches
  • 测试Java的DNS解析能力
    写个极简的测试类,单独验证Java能不能解析目标域名:

    import java.net.InetAddress;
    
    public class DnsTest {
        public static void main(String[] args) {
            try {
                InetAddress address = InetAddress.getByName("gturnquist-quoters.cfapps.io");
                System.out.println("解析到的IP地址: " + address.getHostAddress());
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    

    如果这个测试类也抛出UnknownHostException,说明问题出在Java环境的网络配置,和Spring代码无关。

  • 排查防火墙/安全软件
    有些防火墙或杀毒软件会拦截Java程序的网络请求,试试临时关闭这类软件,再重新运行你的Spring应用,看是否能解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:05:15