公司的框架是在太老了,是2004年甚至更早的时候开发的框架,基于jdk1.4,然后就一直这样用着,由于运行还算稳定,而且完整更换到新的框架工作量是在太大,而且也有风险,无人愿意承担责任,目前还继续这样用。但考虑到发展的需要,我们老大让我研究公司的另外一套东西,这是一个IDE,主要由页面设计器和工作流设计器组成,基于jdk1.5,Struts1.x。因此,我的机器上实际上由两个jdk,一个jdk1.42,一个是jdk1.5。
问题是由enum引起的,在我们的项目里,由于基于1.42,因此框架的核心代码里由用"enum"做变量的情况。如java.util.Enumeration enum = null;显然,这在jdk1.42下是没有问题的。但jdk1.5下,enum已经最为了关键字,这样的代码根本无法编译通过。我把Path和Java_Home指向了jdk1.5,然后启动了Eclipse,这样,Eclipse就在Jdk1.5下构建本应运行在jdk1.4下的工程,我一看不对,就立刻取消了编译,关闭了eclipse。重新把Path和Java_Home指向jdk1.4,再次启动eclipse,发现enum的地方过不去了。可是,如果在命令行了java -version,显示的的确是jdk1.4的版本信息。
我重新安装了操作系统,这次只有jdk1.42,打开eclipse,发现代码里由enum为变量名的地方还是过不去。我就在eclipse里重新建立一个项目,写个测试代码,String enum = "";发现这行代码无法编译,enum为关键字。但现在只有jdk1.42啊!
换个工作区试验一下,打开eclipse,新建一个目录,作为工作区,在写个测试代码,String enum = "";立刻就编译过去了。问题水落石出,看来是曾经在jdk1.5下运行eclipse,对我项目所在的workspace做了一些设置,以后即使再次使用jdk1.4,也无法彻底消除jdk1.5曾经对工作区做的改动。
看来又要从cvs上update代码了。