weblogic部署,常见错误解决二——ClassCastException

3. weblogic使用了自己带的xml解析器造成的ClassCastException

早上接到项目组发来的java程序接口报错信息。分析其中出错信息如下:

1. Warning: Caught exception attempting to use SAX to load a SAX XMLReader   

2. Warning: Exception was: java.lang.ClassCastException: weblogic.apache.xerces.parsers.SAXParser  

3. Warning: I will print the stack trace then carry on using the default SAX parser  

4. java.lang.ClassCastException: weblogic.apache.xerces.parsers.SAXParser  

5.     at org.xml.sax.helpers.XMLReaderFactory.createXMLReader(Ljava.lang.String;)Lorg.xml.sax.XMLReader;(XMLReaderFactory.java:128)  

6.     at org.xml.sax.helpers.XMLReaderFactory.createXMLReader()Lorg.xml.sax.XMLReader;(XMLReaderFactory.java:96)  

7.     at org.dom4j.io.SAXHelper.createXMLReader(Z)Lorg.xml.sax.XMLReader;(SAXHelper.java:83)  

8.     at org.dom4j.io.SAXReader.createXMLReader()Lorg.xml.sax.XMLReader;(SAXReader.java:894)  

9.     at org.dom4j.io.SAXReader.getXMLReader()Lorg.xml.sax.XMLReader;(SAXReader.java:715)  

10.     at org.dom4j.io.SAXReader.read(Lorg.xml.sax.InputSource;)Lorg.dom4j.Document;(SAXReader.java:435)  

11.     at org.dom4j.DocumentHelper.parseText(Ljava.lang.String;)Lorg.dom4j.Document;(DocumentHelper.java:278)

Warning: Caught exception attempting to use SAX to load a SAX XMLReader

Warning: Exception was: java.lang.ClassCastException: weblogic.apache.xerces.parsers.SAXParser

Warning: I will print the stack trace then carry on using the default SAX parser

java.lang.ClassCastException: weblogic.apache.xerces.parsers.SAXParser

at org.xml.sax.helpers.XMLReaderFactory.createXMLReader(Ljava.lang.String;)Lorg.xml.sax.XMLReader;(XMLReaderFactory.java:128)

at org.xml.sax.helpers.XMLReaderFactory.createXMLReader()Lorg.xml.sax.XMLReader;(XMLReaderFactory.java:96)

at org.dom4j.io.SAXHelper.createXMLReader(Z)Lorg.xml.sax.XMLReader;(SAXHelper.java:83)

at org.dom4j.io.SAXReader.createXMLReader()Lorg.xml.sax.XMLReader;(SAXReader.java:894)

at org.dom4j.io.SAXReader.getXMLReader()Lorg.xml.sax.XMLReader;(SAXReader.java:715)

at org.dom4j.io.SAXReader.read(Lorg.xml.sax.InputSource;)Lorg.dom4j.Document;(SAXReader.java:435)

at org.dom4j.DocumentHelper.parseText(Ljava.lang.String;)Lorg.dom4j.Document;(DocumentHelper.java:278)

很明显是因为weblogic使用了自己带的xml解析器造成的ClassCastException。这个以前遇到过,以前的解决方法是在web-inf下加一个weblogic.xml使用prefer-web-inf-classes标签配置weblogic优先使用web程序自带的类库。

Xml代码

1. <?xml version="1.0" encoding="UTF-8"?>

2. <!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">

3. <weblogic-web-app>

4.     <container-descriptor>

5.         <prefer-web-inf-classes>true</prefer-web-inf-classes>

6.     </container-descriptor>

7. </weblogic-web-app>

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">

<weblogic-web-app>

<container-descriptor>

<prefer-web-inf-classes>true</prefer-web-inf-classes>

</container-descriptor>

</weblogic-web-app>


结果到自己的程序下面一看,已经放了这个文件了!晕死,咋整的啊。怎么在weblogic8.1中不好使?

就在网上一顿乱找,结果是好使。但是为什么在我们的项目上不好使那,自己一直用的是tomcat做的程序,没有在weblogic上测试过。没办法只好安装一个,一测试还真是有这个问题。但是看看自己以前的程序就是这么配置的weblogic.xml文件啊。怎么就不好使了那,这个生气啊。

静下心,使劲分析weblogic的出错日志文件(其实就是看看),分析weblogic使用了自己的SAXParser类,在想想类的装载顺序,一直以为weblogic.xml没有起作用,就没想到即使起作用了,你自己的web应用程序下的类库中如果没有这个SAXParser类,weblogic还是会用自己带的weblogic.apache.xerces.parsers.SAXParser。

马上查自己的程序类库,xml.jar、xmlparserv2.jar,以为所有的关于xml的类都在这两个文件里。但是打开两个包一看,没有。白忙活了好几个小时。

想起来自己以前解决过这个问题,当时是在程序中加了xerces.jar。还在奇怪为什么自己现在才想起来。

一切终于平静了。

马上写个日志,记录下来。

下次希望自己不会再走弯路了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值