Eclipse Classic 3.7 无法安装 ADT,如何解决?
结论
这里涉及两个相关问题:
Cannot assign requested address: JVM_Bind表示 Eclipse 使用的 JVM 无法建立网络连接。原因不一定是代理,也可能是 Eclipse 网络配置、IPv6、Winsock、VPN、杀毒软件或防火墙。requires 'org.eclipse.gef 0.0.0'表示 Eclipse Classic 3.7 缺少 GEF。ADT 的离线 archive 通常不包含这类 Eclipse 平台依赖,只导入 ADT archive 无法完成安装。
先恢复 Eclipse 的网络访问,再通过 Indigo 软件仓库安装 GEF 和 ADT。如果必须离线安装,还需要准备与 Eclipse 3.7 对应的 GEF p2 仓库。
检查 Eclipse 的网络设置
打开:
Window > Preferences > General > Network Connections
如果家庭网络没有使用代理,将 Active Provider 设置为:
Direct
检查 HTTP、HTTPS 和 SOCKS,清除残留的代理地址,然后重启 Eclipse。
如果浏览器能访问更新地址,Eclipse 却不能,可以改用 Native,让 Eclipse 读取系统代理设置。只有在明确知道代理服务器地址时才使用 Manual。
还可以在命令提示符中检查 Windows 是否配置了 WinHTTP 代理:
netsh winhttp show proxy
WinHTTP 代理和 Eclipse 自身的代理设置是两套配置。这个命令只能用于判断系统环境,不能代替 Eclipse 中的设置。
强制 JVM 使用 IPv4
旧版 JVM 在部分 Windows 7 网络环境中使用 IPv6 时,可能出现 JVM_Bind。可以在 eclipse.ini 的 -vmargs 后添加:
-vmargs
-Djava.net.preferIPv4Stack=true
如果文件中已经有 -vmargs,只添加下面这一行,不要重复写 -vmargs:
-Djava.net.preferIPv4Stack=true
保存文件,完全退出 Eclipse 后重新启动。
如果需要在 eclipse.ini 中指定 JVM,-vm 必须放在 -vmargs 前面,参数和路径各占一行。例如:
-vm
C:/Program Files/Java/jdk-version/bin/javaw.exe
-vmargs
-Djava.net.preferIPv4Stack=true
jdk-version 是占位符,需要替换成实际的安装目录,不能直接照抄。
修复 Windows 网络栈
如果 Eclipse 和其他 Java 程序都无法建立连接,先关闭 VPN、虚拟网卡相关软件,以及可能拦截 Java 网络请求的安全软件,然后重试。
如果问题仍未解决,以管理员身份打开命令提示符并执行:
netsh winsock reset
ipconfig /flushdns
执行后重新启动 Windows。netsh winsock reset 会重置 Winsock 目录,某些 VPN 或网络过滤软件之后可能需要重新配置,所以不建议一开始就使用这个命令。
还可以检查域名解析是否正常:
nslookup download.eclipse.org
如果域名无法解析,应先排查 DNS、路由器或安全软件。此时修改 Eclipse 安装源并不能解决 JVM_Bind。
从 Indigo 仓库安装 GEF
Eclipse Classic 没有预装 ADT 所需的全部组件。Eclipse 3.7 对应 Indigo 发布仓库,可在以下位置添加:
Help > Install New Software > Add
仓库地址:
http://download.eclipse.org/releases/indigo
添加后,在可用组件中查找并安装 GEF。它在不同的仓库界面中可能显示为 Graphical Editing Framework、GEF 或 GEF SDK。ADT 缺少的是提供 org.eclipse.gef 的组件,不要通过手工复制单个 JAR 来满足依赖。
安装时勾选:
Contact all update sites during install to find required software
这样 p2 才能从 Indigo 仓库查找 ADT 的依赖。安装 GEF 并重启 Eclipse 后,再添加 ADT 更新站点或选择 ADT archive。
Eclipse 自身的更新地址是:
http://download.eclipse.org/eclipse/updates/3.7
这个地址主要提供 Eclipse Platform 更新。ADT 所需的 GEF 等组件通常要从 Indigo 聚合仓库解析,只启用 Eclipse Platform 更新地址仍可能遇到依赖缺失。
完全离线安装的方法
如果暂时无法解决网络问题,只下载 ADT archive 还不够。需要准备:
- ADT 的 p2 archive;
- 与 Eclipse 3.7/Indigo 兼容的 GEF p2 update-site archive;
- 安装过程中提示缺少的其他 Eclipse 依赖仓库。
在 Help > Install New Software 中按以下顺序操作:
- 选择
Add > Archive,载入 GEF 的 update-site archive。 - 安装 GEF,然后重启 Eclipse。
- 再次选择
Add > Archive,载入 ADT archive。 - 安装 ADT,确认安装器不再提示缺少
org.eclipse.gef。
archive 必须是 Eclipse p2 能识别的更新站点压缩包。普通源码包、插件源码压缩包或随意下载的 org.eclipse.gef.jar 都不能替代它。也不要直接把 JAR 复制到 plugins 目录,这会绕过依赖解析,可能留下不完整的安装状态。
检查 32 位和 64 位是否匹配
64 位 Eclipse Classic 本身不会导致 org.eclipse.gef 缺失,但 Eclipse 和 JVM 的位数必须一致。可以在命令提示符中检查 Java:
java -version
同时在 Eclipse 中打开:
Help > About Eclipse > Installation Details > Configuration
查看实际使用的 java.home、java.version 和体系结构。64 位 Eclipse 应由 64 位 JVM 启动。位数不匹配通常会导致 Eclipse 无法启动或无法加载本地库,不会引发这里的 GEF 依赖错误,因此这只是环境检查项,不是主要修复方向。
仍然无法安装时
现在重新搭建这套历史环境时,旧更新站点可能已经迁移、归档,或者停止提供部分内容。遇到这种情况,需要使用 Eclipse 官方归档站点或完整保存的 Indigo p2 仓库。具体归档地址以实际可访问的官方页面为准。
排查时,最好使用一份全新解压的 Eclipse Classic 3.7,以免此前失败的安装留下无效仓库或插件状态。按以下顺序检查:
- Eclipse 能否访问 Indigo 仓库;
- 能否从 Indigo 仓库安装 GEF;
- ADT 安装器能否解析
org.eclipse.gef; - Eclipse、JVM 和操作系统的位数是否匹配。
恢复网络访问并让 Indigo 仓库参与依赖解析后,ADT archive 提示缺少 org.eclipse.gef 的问题通常就能解决。
备注:内容仅供参考。
