JDK1.6和JDK1.7共存和Eclipse出错

来源:互联网 发布:mac系统pdf转换成word 编辑:程序博客网 时间:2024/05/17 06:09

背景:

         JDK 都已经发布到1.8版本了,作为一个“怀旧”的programer,我对新版本一直没什么关注。一直都是项目需要哪个版本就用哪个版本JDK,而且我一直认为如果项目太过于依赖JDK版本的话,那开发和设计上太shit了!这几天由于一些原因需要切换到老版本的项目去做些东西。老版本(称为V1)使用的是JDK1.6开发的,新版本(称为V2)使用的是JDK1.7。现在需要两个版本的JDK共存,本以为很简单的事情,结果出了一堆问题。囧!!发火

 

问题:

    1.安装了JDK1.6,copy了eclipse,get了项目代码,但是公司的eclipse插件无法运行!

    2.指定了Eclipse启动时使用的JDK为1.6,报错code 13,无法启动Eclipse!

    3.解决了Eclipse启动问题和插件问题,分别为项目(两个工作空间)指定了JDK版本,但是1.7版本的无法运行,会显示“找不到或无法加载主类错误”!

    本来这个事件是很简单的,但是由于一些小的细节失误才导致自己绕了老大一个圈子。看来细节决定成败在哪儿都适用!

 

总结:

    1. JDK在大版本上是允许同时存在的,但是小版本上是不允许的;

    2. Eclipse本身是一个Java程序,这我们都知道,但是Eclipse启动的时候为什么找不到一个javaw进程呢?那是因为Eclipse默认调用的是jvm.dll,如果我们指定启动参数是javaw.exe那么会启动一个javaw.exe进程。

    3.Eclipse也会依赖一定版本的JDK,这要看你用哪个版本的Eclipse,一般来说它是向后兼容的,也就是JDK1.5能运行,JDK1.6、JDK1.7也可以。但是不保证Eclipse的插件在不同版本的JDK上也能良好运行,比如我们公司的插件,对JDK版本依赖就很强。

    4.Eclipse可以指定编译、运行Java程序的JDK版本,这个JDK版本和它本身运行时的JDK是不一样的,或者说两者毫无关系,可以是同一个JDK。

    5.Eclipse分32位和64位,必须配合32位和64位JDK,否则会报错!

 

过程:

    (1)Eclipse插件无法运行:

    原因:Eclipse启动时使用的JDK版本不符合插件要求。

    方法:指定Eclipse启动用的JKD,在eclipse.ini文件中添加如下参数,

-vm D:\JDK1.6\bin\javaw.exe

    结果:启动的时候会报下面的错误:

    (2)Eclipse启动报错,code 13

    原因:至于eclipe.ini中指定的vm参数路径不对,或者是Eclipse的位数和JDK位数不一致。

    方法:下载32位JDK,重新安装,指定vm参数。

    PS:官网的JDK也不纯洁了,竟然向注册表写入了一些东西,然后无法卸载,只能下载个卸载工具,强制卸载清除注册表了。

    结果:重新安装符合要求的JDK后,Eclipse果然能启动了,先安装的1.6然后V1项目可以用了,然后安装了1.7,给Eclipse添加了JDK1.7的路径,然后为V2指定了编译级别,但是却发生了如下错误:

 

    (3)Eclipse指定JDK1.7编译级别报错,找不到主类

    原因:最后经过一些反复查找,才发现是Eclipse下新增JDK1.7时一个参数填错了!!


    在Defalut VM arguments下面竟然多填写了一个JDK1.7。导致每次Eclipse运行的时候都会去找JDK1.7这个类。o(╯□╰)o

    方法:删除Defalut VMArguments参数。

 

    PS:如果没有安装JDK或者Jre的话,Eclipse启动会报如下错误:

 

最后吐槽下:

    公司插件竟然跟JDK依赖那么紧密,简直是shit!而且还没指导文档,浪费了近一天的时间!

然后就是Java竟然也不纯洁了,windows版下面竟然还有update程序,还会去注册表写东西!!!!你怎么能这样!

 

2 0
原创粉丝点击