Eclipse 內建的「Show in System Explorer」功能原本相當方便,能快速在檔案總管中開啟專案資料夾。但某天突然失效,點擊後 Eclipse 直接卡死、未響應,甚至拋出 exit code = -805306369 的錯誤訊息。經過排查,根本原因竟然是本機安裝了多個版本的 JDK 導致衝突。
當點擊該功能時,Eclipse 進程凍結,控制台輸出如下錯誤堆疊:
Java was started but returned exit code= -805306369 C:\Windows\system32\javaw.exe -Dosgi.requiredJavaVersion=1.5 -Xms40m -Xmx512m -jar D:\Program Files\eclipse\plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar ... -vm C:\Windows\system32\javaw.exe -vmargs ...
關鍵線索在於 -vm C:\Windows\system32\javaw.exe 這行,指向系統目錄下的 Java 執行檔,而非 Eclipse 專用的 JDK。
本機同時安裝了 JDK 6 與 JDK 7 兩個版本。Eclipse 啟動時若解析到系統路徑 C:\Windows\system32\javaw.exe(這通常是最後安裝的 JRE 複製過去的),而該版本與 Eclipse 當前運行環境不匹配,導致啟動外部程序時 JVM 崩潰。
只保留與 Eclipse 版本對應的 JDK,將其他版本完整卸載。例如 Eclipse 為 64 位元版本,則僅保留 64 位元 JDK 7 或更新版本,移除 JDK 6 及所有 32 位元殘留。
若開發環境必須共存多個 JDK,請在 eclipse.ini 檔案最前方添加 -vm 參數,強制指定 Eclipse 使用的 JDK 路徑:
-vm D:/Java/jdk1.7.0_80/bin/javaw.exe -vmargs -Dosgi.requiredJavaVersion=1.7 -Xms256m -Xmx1024m ...
注意: -vm 必須放在 -vmargs 之前,且路徑指向 JDK 的 bin/javaw.exe(而非 JRE)。重啟 Eclipse 後,問題即可解決。
修改完成後,再次點擊「Show in System Explorer」,檔案總管應能即時彈出,Eclipse 不再卡死。若仍有問題,請檢查 eclipse.ini 中的架構一致性(32/64 位元必須匹配)。