Eclipse 遠程調試時遇到 「Failed to connect to remote VM」**,檢查目標 JVM 參數、防火牆、端口均正常,最終發現是 **Eclipse 內部代理設置** 導致調試連接被錯誤代理。本文記錄排查過程、根因分析與解決方案,避免同類問題重複踩坑。
現象描述
- 目標應用啟動參數包含:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000
- 端口 8000 在目標機器
netstat -an | grep 8000 顯示 LISTEN
- 本地
telnet target-host 8000 連通正常
- Eclipse Debug Configurations → Remote Java Application 設置正確(Host、Port)
- 點擊 Debug 後報錯:Failed to connect to remote VM. Connection refused / timeout

排查過程
- 確認目標 JVM 參數無誤,端口監聽正常
- 確認網絡連通性:telnet、nc、curl 均通
- 嘗試 IntelliJ IDEA 連接同一目標 → **成功**
- 推測 Eclipse 客戶端配置問題
- 檢查 Eclipse Window → Preferences → General → Network Connections**
- 發現 Active Provider: Manual** 且設置了 HTTP/HTTPS/SOCKS 代理
- 將 Active Provider 改為 **Native** 或 **Direct** → 遠程調試即刻成功
根因分析
- Eclipse 內部網絡層(基於 Apache HttpClient / Java Net API)遵循 Preferences 中的代理設置
- 遠程調試連接(JDWP 協議,TCP 直連)被錯誤路由到代理服務器
- 代理服務器不支持 JDWP 協議轉發,或目標地址在代理白名單外,導致連接失敗
- 關鍵認知:Eclipse 代理設置**不僅影響插件安裝/更新、Maven 索引下載**,還影響** Eclipse 發起的所有網絡連接**,包括遠程調試、JMX 連接、服務器適配器部署等
解決方案
方案一:全局關閉代理(最簡單)

Window → Preferences → General → Network Connections
- Active Provider 選擇 **Direct** 或 **Native**(Native 使用系統代理,Direct 直連)
- Apply and Close
方案二:添加繞過規則(保留代理用於插件更新)
- Active Provider 保持 Manual
- 在 Proxy bypass 列表添加:
localhost
127.0.0.1
::1
*.your-internal-domain.com
192.168.*
10.*
172.16.*-172.31.*
- 覆蓋內網地址段,遠程調試目標通常為內網 IP
- 插件市場、Maven Central 等外網請求仍走代理
方案三:運行配置級別覆蓋(精確控制)
- Debug Configurations → 你的 Remote Java Application → Common 標籤
- 取消勾選 Use network proxy settings(若可見)或在 Environment 添加:
JAVA_TOOL_OPTIONS=-Djava.net.useSystemProxies=false -Dhttp.nonProxyHosts="localhost|127.0.0.1|192.168.*|10.*|172.16.*-172.31.*"
最佳實踐建議
| 場景 | 推薦設置 |
| 純內網開發、無外網訪問需求 | Active Provider = Direct |
| 需訪問外網插件市場、Maven Central | Manual + 完整 Proxy bypass 內網段 |
| 企業統一代理、強制所有流量走代理 | Native(使用系統代理)+ 確保系統代理設置正確 |
| 頻繁切換網絡環境(辦公室/家/咖啡廳) | 使用 Proxy SwitchyOmega 等瀏覽器插件管理,Eclipse 保持 Direct |
延伸:其他受代理影響的 Eclipse 功能
- Maven 依賴下載、索引更新
- Eclipse Marketplace / Install New Software
- Server Adapters (Tomcat, WildFly 等) 下載、部署
- JMX / RMI 連接監控遠程 JVM
- Docker / Kubernetes 插件連接守護進程
- Git 推拉(若使用 EGit 內部 HTTP 客戶端)
下次遇到「明明網絡通、配置對、就是連不上」的 Eclipse 網絡問題,**第一時間檢查 Network Connections 代理設置**,能節省數小時排查時間。