was8.5 上启动出错,javax.xml.parsers.DocumentBuilderFactory

今天部署个war包到was8.5上出错,死活起不来。

检查日志报java.lang.ClassCastException: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl incompatible with javax.xml.parsers.DocumentBuilderFactory

连spring配置文件都读不出来,看来是少了xercesImpl包,后来查原因发现是之前的项目有另外一个组件包含了这个jar,而新项目没有导入该组件。。

查了下资料,原来启动的时候,到底javax.xml.parsers.DocumentBuilderFactory的实现类用哪个还真有讲究。

以下转载自
http://www.blogjava.net/xiaomage234/archive/2008/09/12/228532.html
[quote]
sun和ibm都有一套xml的实现,sun的实现是打到jdk里面了。
但当加载的时候,如果ibm的实现jar包xercesImpl.jar的接口 xml-apis.jar [j2ee1.4 library 有]文件导入到classpath 里了的话:
1 如果xml-apis.jar先于 jre加载,那么 将采用 xercesImpl.jar的实现;
2 如果jre先加载,那么将用 sun的xml实现,而取这个实现的类又分别按顺序从4个位置取.

使用 javax.xml.parsers.DocumentBuilderFactory 系统属性。
使用 JRE 文件夹中的属性文件 "lib/jaxp.properties"。此配置文件格式为标准的 java.util.Properties 且包含实现类的完全限定名,其中实现类的键是上述定义的系统属性。 JAXP 实现只读取一次 jaxp.properties 文件,然后缓存其值供以后使用。如果首次尝试读取文件时,文件不存在,则不会再次尝试检查该文件是否存在。首次读取 jaxp.properties 后,其中的属性值不能再更改。
如果可以,使用 Services API(在 JAR 规范中进行了详细描述)来确定类名称。Services API 将查找在运行时可用的 jar 中 META-INF/services/javax.xml.parsers.DocumentBuilderFactory 文件中的类名。
平台默认的 DocumentBuilderFactory 实例。
这些过程,自己可以通过加vm参数 "-verbose"的方式进行跟踪
[/quote]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值