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

启动Grails 3.3.2时出现Unknown Host (504)错误求助

Grails 3.3.2 启动时 Unknown Host (504) 错误的解决建议

根据你描述的情况——在Mac代理环境下启动Grails 3.3.2时遇到504未知主机错误,且已在Grails脚本中配置了GRAILS_OPTS代理参数但问题依旧,结合报错栈信息(底层是Aether依赖解析时的网络请求失败),我整理了以下几个排查和解决方向:

1. 先确认代理参数的准确性

首先要确保你配置的代理地址和端口是完全正确的:

  • 检查myHttpProxy和myHttpsProxy是否是实际可用的代理服务器地址,有没有拼写错误(比如漏写域名后缀、IP写错)
  • 验证代理端口是否匹配,比如HTTP代理是否真的监听8000端口,HTTPS代理是否是443。可以用curl测试代理能否访问Grails的仓库:
    curl -x http://myHttpProxy:8000 https://repo.grails.org
    
    如果测试失败,说明代理本身不可用,需要先解决代理的连通性问题
  • 如果你的代理需要账号密码认证,记得在GRAILS_OPTS里补充认证参数:
    export GRAILS_OPTS="-Dhttp.proxyHost=myHttpProxy -Dhttp.proxyPort=8000 -Dhttp.proxyUser=your-username -Dhttp.proxyPassword=your-password -Dhttps.proxyHost=myHttpsProxy -Dhttps.proxyPort=443 -Dhttps.proxyUser=your-username -Dhttps.proxyPassword=your-password"
    

2. 确认GRAILS_OPTS配置是否生效

有时候修改脚本后环境变量不会立即生效,你可以先在终端里直接执行echo $GRAILS_OPTS,看看输出是否包含你设置的所有代理参数:

  • 如果输出为空或者不完整,说明脚本修改没生效。可以尝试:
    1. 重新打开终端窗口,让环境变量重新加载
    2. 或者直接在当前终端临时设置GRAILS_OPTS,然后再运行Grails命令测试:
      export GRAILS_OPTS="-Dhttp.proxyHost=myHttpProxy -Dhttp.proxyPort=8000 -Dhttps.proxyHost=myHttpsProxy -Dhttps.proxyPort=443"
      grails --stacktrace --verbose
      

3. 尝试通过Maven settings.xml配置代理

Grails底层依赖Maven的Aether来解析依赖,直接配置Maven的代理可能比GRAILS_OPTS更可靠:

  1. 找到Maven的配置文件路径:通常是~/.m2/settings.xml,如果没有这个文件,直接创建一个
  2. 添加代理配置到settings.xml中:
    <settings>
      <proxies>
        <!-- HTTP代理配置 -->
        <proxy>
          <id>http-proxy</id>
          <active>true</active>
          <protocol>http</protocol>
          <host>myHttpProxy</host>
          <port>8000</port>
          <!-- 有认证需求的话取消下面两行注释 -->
          <!-- <username>your-proxy-username</username> -->
          <!-- <password>your-proxy-password</password> -->
          <nonProxyHosts>localhost|127.0.0.1</nonProxyHosts>
        </proxy>
        <!-- HTTPS代理配置 -->
        <proxy>
          <id>https-proxy</id>
          <active>true</active>
          <protocol>https</protocol>
          <host>myHttpsProxy</host>
          <port>443</port>
          <!-- 有认证需求的话取消下面两行注释 -->
          <!-- <username>your-proxy-username</username> -->
          <!-- <password>your-proxy-password</password> -->
          <nonProxyHosts>localhost|127.0.0.1</nonProxyHosts>
        </proxy>
      </proxies>
    </settings>
    
  3. 保存文件后,重新运行Grails命令,看是否能正常启动

4. 排查网络和防火墙限制

  • 确认代理服务器本身是可达的:可以尝试ping myHttpProxy(如果代理服务器允许ICMP请求),或者用telnet测试端口连通性:telnet myHttpProxy 8000
  • 检查Mac系统防火墙是否阻止了Grails的网络请求:打开「系统设置」→「网络」→「防火墙」,确认Grails相关进程被允许访问网络
  • 确认代理服务器没有限制对Grails仓库域名的访问:比如repo.grails.org、repo.maven.apache.org这些Maven仓库地址,需要确保代理允许访问这些域名

5. 清理本地缓存后重试

有时候本地缓存的依赖文件可能损坏或者不完整,导致Grails启动时请求失败:

  • 删除Grails的本地缓存目录:rm -rf ~/.grails
  • 删除Gradle的本地缓存目录:rm -rf ~/.gradle
  • 然后重新运行Grails命令,让它重新下载所有依赖

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:24:17