前些日子下载了最新版本的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 的机制还需要高人来指点.

|