在学习《struts2.0权威指南》的时候遇见了如下错误:
配置完成:出现如下错误:
严重: Exception starting filter struts2
java.lang.AbstractMethodError: org.apache.xerces.dom.DocumentImpl.setXmlVersion(Ljava/lang/String;)V
我的配置如下:
用了5个jar包:
commons-loggin-1.1.jar
freemarker-2.3.13.jar
ognl-2.6.11.jar
struts2-core-2.1.6.jar
xwork-2.1.2.jar
其中web.xml文件的内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!-- struts2 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
用了5个jar包:
commons-loggin-1.1.jar
freemarker-2.3.13.jar
ognl-2.6.11.jar
struts2-core-2.1.6.jar
xwork-2.1.2.jar
其中web.xml文件的内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!-- struts2 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
最终解决方案:
The reason was in JVM version. Platforms where deployment was successful used JVM 1.5 but problematical one had JVM 1.6. SAX2DOM class from Java 1.6 has a call to DocumentImpl::setXmlVersion() from itssetDocumentInfo(). The version of xerces library I used doesn't have this method - it's a real reason of exception. So after I downloaded the latest version of xerces everything works fine.
我英语不太好:大致翻译了一下:大概是jvm中版本问题,jvm中没有jar包可以解析itsetDocumnetInfo()方法,缺少解析的jar包,到网上下载了个xerces.jar包,问题解决 struts2.0正常解析启动。