您的位置:首页 > 编程语言 > Java开发

struts 2.3.15做例子时报异常:java.lang.RuntimeException: java.lang.reflect.InvocationTargetException 解决

2014-10-28 21:53 609 查看
看到的解决方法: 
1、核对WEB-INF目录下的lib包 是否包含strut2的8个核心jar包

      文件名                     说   明

struts2-core-2.3.4.1.jar      Struts 2框架的核心类库

Xwork-core-2.3.4.1.jar        XWork类库,Struts 2的构建基础

Ognl-3.0.5.jar                Struts 2使用的一种表达式语言类库

freemarker-2.3.19.jar         Struts 2的标签模板使用类库

commons-fileupload-1.2.2.jar    Struts 2文件上传依赖包

javassist-3.11.0.GA.jar       代码生成工具包

commons-lang3-3.1.jar         Apache语言包,是java.lang包的扩展

commons-io-2.0.1.jar          Apache IO包

注意2.1以前是没有commons-fileupload-1.2.1.jar, strut2的8个核心jar包是使用strut2必须导入的最少jar包

2、如果struts2版本是2.1以前 

web.xml配置过滤器的时候应该是这样: 

<web-app> 

<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配置 

<web-app> 

<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>

####################################################

  实际上,无论struts2是哪个版本的,都可以在web.xml加入清除缓存的过滤器,但这不是必须的:
<filter>

<filter-name>struts-cleanup</filter-name>

<filter-class>

org.apache.struts2.dispatcher.ActionContextCleanUp

</filter-class>

</filter>

<filter-mapping>

<filter-name>struts-cleanup</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>
strtus2要在web.xml里面配置这一项作用:

 清除缓存,帮我们进行清理

在做上传文件的时候,要在web.xml中增加ActionContextCleanUp这个filter,如果不增加,会发生第一次上传取不到文件的情况

其实:struts2 版本在2.1以上也可以2中的web.xml配置 

3、

在使用struts-2.2以上版本时,必须加入javassist-**.ga.jar,否则就会出现上面的错误提示,而这个在struts-2.3.4\lib(其中struts-2.3.4是struts的目录)下是没有的,需要在struts-2.3.4\apps\struts2-blank-2.2.1.war下的lib中找到并加入到当前项目下WEB-INF/lib目录下。

所以在struts2.1以上的版本要引入的包应该是8个包

commons-fileupload-1.2.1.jar,

commons-io-1.3.2.jar

commons-logging-1.0.4.jar

freemarker-2.3.16.jar

javassist-3.7.ga.jar

ognl-3.0.jar

struts2-core-2.2.1.jar

xwork-core-2.2.1.jar
struts.xml文件头是从struts2-2.2.1-all\struts-2.2.1\apps里的任意文件拷贝的!

--------------------------------------------------------------------------------------------------------------------------------------------------------

4、通用解决办法

 其实可以把struts-2.3.4\apps\struts2-blank-2.2.1.war下的lib中所有jar包导入到当前项目的WEB-INF/lib目录下。(struts-2.3.4\apps\目录下是所有的示例文件)

但是还有一个错误:

严重: Exception starting filter struts2

java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils

按照提示导入commons-lang3-3.1.jar

马蛋,现在知道老师上课说的一点也不靠谱。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struts 2
相关文章推荐