前些日子下载了最新版本的Eclipse3.0,解压到e:\Temp\Eclipse目录下,启动时弹出一个小提示框说出错请查看Eclipse\configuration\下的一个*******.log文件.
文件中说:
!SESSION 涓€鏈?01, 2005 23:16:43.692 ----------------------------------------------
eclipse.buildId=I200405211200
java.version=1.3.1_01
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=zh_CN
!ENTRY org.eclipse.osgi 涓€鏈?01, 2005 23:16:43.692
!MESSAGE Error registering XML parser services.
!STACK 0
java.lang.ClassNotFoundException: javax.xml.parsers.SAXParserFactory
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
于是上CSDN发贴求助,无果,Eclipse还是无法使用.近来偶读王森著的<<Java深度历险>>, 书中的解释给我以启发,最终Eclipse跑起来了,虽然还有若干疑点,故将解决此问题的过程与剩余的疑点写出来与大家探讨.
问题的解决:
引起问题的原因是eclipse找到的虚拟机是1.3.1_01版本的,而此版本的JVM根本不自带javax.xml.parsers.SAXParserFactory这样一个类
我猜测根目录下的eclipse.exe与%Java_Home%\bin\java.exe 是同样的功能,就是定位到底运行哪一个JVM
根据<Java深度历险>上所说java.exe 按照如下顺序搜索JVM
1 自己当前目录下有没有JRE(原书说这种说法不够精确)
2 父目录下有没有JRE
3 查询注册表(HKey_Local_Machine\Software\JavaSoft\Java Runtime Environmet\)
所以我把整个eclipse目录下的文件复制到我的%Java_Home%\ 目录下面,按照上面的说法,它会先去寻找%Java_Home%\JRE 找到后就直接执行此目录下的虚拟机,而此虚拟机是1.5版的,这样eclipse就可以正常启动了.
疑惑
原来Eclipse找到的JVM1.3.1_01是我装好操作系统后装的第一个JRE,位于C:\Program Files\IBM\JRE\1.1\bin 而这个JRE 根本没有在注册表里面注册 按照<Java深度历险>书上的内容它是不可能被找到的. 所以eclipse.exe启动时选择JRE 的机制还需要高人来指点.