日期:2014-05-17  浏览次数:20902 次

Windows下多版本Java并存问题

跨平台的Java配置如下:

C:\Users\Administrator>set path

Path=……D:\Program Files\Java\jdk1.6.0_31\bin;……

?

C:\Users\Administrator>set java

JAVA_HOME=D:\Program Files\Java\jdk1.6.0_31

?

但是Windows平台可能出现javac和java版本不一致的情况:

C:\Users\Administrator>javac -version

javac 1.6.0_31

?

C:\Users\Administrator>java -version

java version "1.7.0_04"

Java(TM) SE Runtime Environment (build 1.7.0_04-b20)

Java HotSpot(TM) 64-Bit Server VM (build 23.0-b21, mixed mode)

?

这是因为Windows使用注册表作为一切工作的主旨,而JDK和JRE被定义为最高版本,并且window的home目录下的system32目录的Java可执行文件被替换为最高版本的了。该文件会根据策略查找相应jre/lib目录下的dll文件。

?

JDK

JRE

可执行文件

?

平台解决方案:

1.替换可执行文件为指定版本,将指定版本设置为CurrentVersion

2.将高版本的JRE注册表信息替换为指定版本的内容

?

Eclipse下解决方案:

指定vm:

eclipse.ini

-vm

D:/Program Files/Java/jdk1.6.0_31/bin/javaw.exe