找回 Eclipse 中消失的 NDK

强迫症的三太爷,有个习惯,对于普通电脑用户来说,可能还好,但对于开发人员来说,就不见得好。这个习惯是:经常第一时间把软件升级到最新版本。这回出事的是 Eclipse 里的 NDK。

之前写过一两篇和 NDK 相关的,分别见《兜兜转转 NDK》和《兜兜转转 NDK(续)》,里面提到好不容易才让 NDK 出现在 Eclipse 的配置里。不幸的是,在此之后 Eclipse 和 ADT 貌似都更新了几次,然后前天突然发现 NDK 消失了。那种悲痛的心情真是无以言表……

把能想到的招儿全使过了也没用。甚至去 Eclipse 所在的路径下,把 configuration、featues、plugins 几个目录都研究过了,还把 com.android.ide.eclipse.ndk_23.0.4.1468518.jar 解开来看,差不多都会能自己写 Eclipse 的插件了,仍然无解。最后是在查看 Eclipse 关于框中的 Installation Details 里的内容时,发现最后的 Configuration 标签页内竟然有个 View Error Log 的按钮。点击以后,错误日志会在浏览器中打开,搜索“NDK”,果真发现了相关错误的记录:

!ENTRY com.android.ide.eclipse.ndk 4 0 2014-10-06 10:47:31.542
!MESSAGE FrameworkEvent ERROR
!STACK 0
org.osgi.framework.BundleException: Could not resolve module: com.android.ide.eclipse.ndk [750]
Unresolved requirement: Require-Bundle: org.eclipse.cdt.core
-> Bundle-SymbolicName: org.eclipse.cdt.core; bundle-version=”5.8.0.201409172108″; singleton:=”true”
org.eclipse.cdt.core [758]
Unresolved requirement: Require-Capability: osgi.ee; filter:=”(&(osgi.ee=JavaSE)(version=1.7))”

at org.eclipse.osgi.container.Module.start(Module.java:434)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1582)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1561)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1533)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1476)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)

最先注意到的是 5.8.0 这个版本号,因为印象里当前安装的 CDT 版本已经是 8.5 了,为什么这里会要求 5.8 呢?跑到 CDT 的官方网站上去看,发现很早之前版本号就在 8 以上了,应该不是这个问题。接下来看到的是 JavaSE 1.7 这个信息,这就更奇怪了,三太爷的系统向来更新频繁,Java 肯定是版本 7 了啊。就在要放弃的时候灵光乍现,突然想起当年构建这个 Eclipse 环境的时候,为了便携,JRE 是直接在其目录下独立存放了一份儿的。经过验证,该独立 JRE 的版本果然还是 1.6,基本可以断定问题所在了。

解决的办法很简单,到系统的已安装 Java 路径下把 JRE7 子目录复制到 Eclipse 下,改名为 JRE 即可。又出来的一个小问题是一下子忘了这份 Eclipse 是 32 位的还是 64 位的了,弄清楚后把相应的 JRE 复制到位,打开 Eclipse,到 Preferences 里查看,果然 NDK 又回来了。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注