背景:
在工作中, 我们可能会碰到多个jdk共存, 未额外安装任何jre, 并且我们使用的是低版本的jdk, 高版本的开发工具, 此文讲述使用的eclipse的运行环境是jre1.8, 其他版本遇到类似情况也可以参考此文给出的解决方案.
开发环境:
a. JDK版本: jdk1.7.0_80 jdk1.8.0_144
图1 已安装的JDK
b. Eclipse版本: Oxygen Release (4.7.0)
图2 Oxygen登录界面
问题:
我们知道eclipse是由Java开发的, 所以它的运行是需要Java的运行环境的, 所以事先已经完成jdk1.7 和 jdk1.8的安装, 由于jdk自带jre, 所以无需额外安装jre.
完成eclipse安装后, 运行eclipse, 发现并不能正常启动eclipse, 提示如下错误, 大意是1.7版的JVM无法适用于此版本的eclipse, 需要一个1.8或者更高版本的JVM.
图3 JVM版本不匹配
解决方案1(不推荐):
卸载jdk1.8, 并且附带安装jre1.8, 这是一个可以解决eclipse启动问题的笨方法, 但是当我们不需要额外的jre的时候, 或者说jre会影响我们项目开发的时候, 这个方案是不可行的.
解决方案2(推荐):
因为我们有了jdk1.8, 所以就有了jre1.8和jvm1.8, 所以我们肯定有办法让eclipse在启动的时候找到正确的jvm.
可是为什么eclipse不能正常启动呢?
答案很简单, 很多软件在启动的时候都会去检测环境变量里的配置, eclipse启动的时候也不例外. 我们在安装jdk1.8的时候, 软件会更改环境变量中的path路径, 额外并且在path变量的最前面加上了"C:\ProgramData\Oracle\Java\javapath;"(这是一个默认路径), 所以eclipse在启动的时候, 极大程度就检测不到最高版本的jvm了, 我们可以通过"java -version"命令确认这个情况.
也就是说就算你安装上jdk1.8, 但是通过"java -version"命令看到的结果并不是关于1.8如图4, 预期效果图见图7:
图4 运行环境为1.7
接下来我们只需要将这段新增的路径放在path变量的最后面即可, 并且我们需要找到jre的bin目录("D:\develop\Java\jdk1.8.0_144\jre\bin;"), 将其添加到path变量的最前面,(这是解决此问题的关键) 这样就算是朝着成功迈出了坚实的一步.
图5 jre中的bin目录
图6 path中的变量值
图7 修改path变量值后的"java -version"命令
接下来,我们重新启动eclipse就可以看到图2的登录界面了, 更改一下环境变量就可以
省去安装jre的麻烦, 并且成功避免jre带来的潜在问题, 感觉整个世界都变好了.
附:
登录问题是解决了, 作为一套完整的解决方案, 此处讲解eclipse的一些其他配置.
问题描述1: 很多老项目飘红(本来是红叉的, 我进行图8操作后就变成红色感叹号了,
我觉得没有必要额外卸载重新演示这个细节).
解决方案: Window-->preference-->Java-->compiler-->JDK Compliance
图8 修改默认编译的JDK版本
此时, 我们只需要再次build path一下就大功告成了.
图9 右键带有红色感叹号的项目
图10 修改jre版本, 建议使用工作空间默认的jre
图11 完成,项目可用
至此, eclipse(4.7.0)已经可以正常使用了.