Struts2启动报错问题总结

现象:

 

两个同样的struts2应用,先启动的不报错,但是后来启动的就报错,非常诡异。

 

java.lang.ClassCastException: org.apache.xerces.parsers.XML11Configuration cannot be cast to org.apache.xerces.xni.parser.XMLParserConfiguration

 at org.apache.xerces.parsers.DOMParser.<init>(Unknown Source)
 at org.apache.xerces.parsers.DOMParser.<init>(Unknown Source)
 at org.apache.xerces.jaxp.DocumentBuilderImpl.<init>(Unknown Source)

 

后来baidu了下,发现时缺少xalan jar包,后来添加了xalan后还是报错,报没有org/apache/xml/serializer/TreeWalker这个类

 

当看见这个错误时就奇怪,明明程序中没用到org/apache/xml/serializer/TreeWalker这个类,它报什么错啊,不过还是查了查。

找到的原因是:原本这个类是包含在xalan.jar中的,但是xalan-j2.7.0版的发布包中,将serializer包中的类单独打包成serializer.jar,不再包含在xalan.jar中,所以才会即使添加了xalan.jar也无法找到该类,添加后即可解决问题。我搜了下自己的硬盘,原来下载的xerces压缩包中有这个包,想起上次解决是把这个包放在tomcat下了,这次写的java文件得将这个包放到环境变量里,于是放进去,重打开editplus,问题解决

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xu2481469/archive/2009/08/05/4413713.aspx

 

---

另外,在网上搜到jdk1.5与tomcat 5.0之间有冲突,http://newpeter.iteye.com/blog/314247

 

记录如下:

 

环境:

1、MyEclipse5.1(Eclipse3.2)

2、Struts2_2.0.11

3、Tomcat5.0

 

异常:

 

Java代码 复制代码
  1. 2009-01-10 15:40:39 StandardContext[/struts2]Exception starting filter struts2   
  2. javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found  
2009-01-10 15:40:39 StandardContext[/struts2]Exception starting filter struts2
javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found

错误原因:

jdk1.5和tomcat5.0之间关于TransformerFactoryImpl类的命名冲突造成。

在tomcat安装目录的common\endorsed下有两个jar包,xercesImpl.jar和xml-apis.jar,其中xml-apis.jar中的

类javax.xml.transform.TransformerFactory与jdk1.5中的类org.apache.xalan.processor.TransferFactoryImpl其实是同一个类。

 

解决:

1、升级tomcat到5.5或更高版本。

2、下载xalan系列jar包。(http://apache.etoak.com/xml/xalan-j/source/)

(xml-apis.jar、xercesImpl.jar、xalan.jar、serializer.jar)

     替换endorsed文件夹中的两个jar包。

 

 

 

你可能感兴趣的:(apache,tomcat,.net,xml,Blog)