严重: Exception starting filter struts2 java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils
严重: Dispatcher initialization failed java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
处理方法:
1、核对lib包
commons-fileupload-1.2.1.jar,
commons-io-1.3.2.jar
commons-logging-1.0.4.jar
freemarker-2.3.16.jar
ognl-3.0.jar
struts2-core-2.2.1.jar
xwork-core-2.2.1.jar)
注意2.1以前是没有commons-fileupload-1.2.1.jar,
2、如果struts2版本是2.1以前
web.xml配置过滤器的时候应该是这样:
<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>
如果struts2 版本是2.1以上
web.xml配置
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
3、
在使用struts-2.2.1时,需要引入javassist-3.7.ga.jar,而这个在struts-2.2.1\lib下是没有的,需要在struts-2.2.1\apps\struts2-blank-2.2.1.war下的lib中找。
严重: Dispatcher initialization failed
Unable to load configuration. - bean - jar:file:/C:/Program Files/Apache Software Foundation/Tomcat 6.0/webapps/Struts2Demo01/WEB-INF/lib/struts2-core-2.1.8.jar!/struts-default.xml:47:178
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:58)
解决办法:
除了
commons-logging-1.0.4.jar
freemarker-2.3.12.jar
ognl-2.6.11.jar
struts2-core-2.1.2.jar
xwork-2.1.1.jar
这五个核心LIB要复制外,
commons-io-1.3.2.jar
commons-fileupload-1.2.1.jar
这两个Jar文件也必须放到指定目录
struts.xml配置文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<struts>
<!-- 加入默认的struts2配置文件 -->
<include file="struts-default.xml" />
<!-- 继承默认的struts2配置文件,概念与Java继承类似 -->
<package name="default" extends="struts-default" >
<!-- 此处hello名称是hello.action的url名字 -->
<action name="hello" class="controller.HelloAction" >
<!-- success指向配置 -->
<result name="success">success.html</result>
</action>
</package>
</struts>
因为在struts.xml文件中缺少了DOCTYPT定义,在文件中加入:
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
即可,正确的配置文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- 加入默认的struts2配置文件 -->
<include file="struts-default.xml" />
<!-- 继承默认的struts2配置文件,概念与Java继承类似 -->
<package name="default" extends="struts-default" >
<!-- 此处hello名称是hello.action的url名字 -->
<action name="hello" class="controller.HelloAction" >
<!-- success指向配置 -->
<result name="success">success.html</result>
</action>
</package>
</struts>
错误Caused by: Unable to load file:/D:/apache-tomcat-6.0.18/webapps/hellostruts2/WEB-INF/classes/struts.xml