关于Eclipse启动时报ClassNotFoundException: javax.xml.parsers.SAXParserFactory异常的解决

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航