macOS下IntelliJ IDEA编译失败:java.net.BindException无法分配请求地址
问题现象
无论运行任何Java程序,都会触发构建进程异常终止,核心错误如下:
Error connecting to 127.0.0.1:60033; reason: Can't assign requested address: /127.0.0.1:60033
io.netty.channel.AbstractChannel$AnnotatedSocketException: Can't assign requested address: /127.0.0.1:60033
Caused by: java.net.BindException: Can't assign requested address
at java.base/sun.nio.ch.Net.connect0(Native Method)
at java.base/sun.nio.ch.Net.connect(Net.java:483)
at java.base/sun.nio.ch.Net.connect(Net.java:472)
已尝试更换不同版本JDK,问题未解决。
排查与解决步骤
检查本地回环地址配置
打开终端执行对应命令,确认127.0.0.1是否在回环接口地址列表中:- macOS/Linux:
ifconfig lo0 - Windows:
ipconfig /all
若缺失,手动添加: - macOS:
sudo ifconfig lo0 inet 127.0.0.1 netmask 255.0.0.0 - Windows(管理员权限cmd):
netsh interface ip add address "Loopback Pseudo-Interface 1" 127.0.0.1 255.0.0.0
- macOS/Linux:
排查端口状态与系统限制
检查目标端口是否被占用:- macOS/Linux:
lsof -i :60033 - Windows:
netstat -ano | findstr :60033
若端口被占用,终止对应进程;若未被占用,检查系统端口范围限制(如macOS执行sysctl net.inet.ip.portrange.*),确认60033在允许的动态端口区间内。
- macOS/Linux:
校验hosts文件配置
打开对应系统的hosts文件,确保存在未被注释的127.0.0.1 localhost条目,无错误地址覆盖该映射:- macOS/Linux:
/etc/hosts - Windows:
C:\Windows\System32\drivers\etc\hosts
- macOS/Linux:
临时禁用IPv6(针对macOS)
若IPv6配置异常影响IPv4回环连接,执行sudo sysctl -w net.inet6.ip6.enable=0临时禁用IPv6,测试问题是否解决。如需永久生效,可修改/etc/sysctl.conf添加对应配置。排查防火墙与安全软件
暂时关闭系统防火墙及第三方安全软件,确认是否是它们阻止了本地回环端口的连接。若确认是该原因,添加Java程序或对应端口的允许规则。
内容的提问来源于stack exchange,提问作者Lironz

