Struts 2.3.29 Dispatcher initialization failed问题
初学Struts 2, 在进行配置部署的过程中反复遇到了
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. Struts 2.1版本
在2.1版本之前web.xml中有关filter-class的配置为:
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
在2.1版本之上web.xml中有关filter-class的配置为:
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
3.javassist包
在使用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中找。
在Struts 2.3.29版本中按照上述情况修改后,问题依旧。
在对2.3.29版本的Example分析之后,更改了依赖包的内容如下:
asm-3.3.jar
asm-commons-3.3.jar
asm-tree-3.3.jar
commons-fileupload-1.3.1.jar
commons-io-2.2.jar
commons-lang-2.4.jar
commons-lang3-3.2.jar
commons-logging-1.1.3.jar
freemarker-2.3.22.jar
javassist-3.11.0.GA.jar
ognl-3.0.17.jar
struts2-core-2.3.29.jar
xwork-core-2.3.29.jar
同时,filter-class改为上文提到的
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
最后,2.3.29版本中,包javassist-3.11.0.GA.jar已经可以在lib中找到。
按照上述方式配置后,运行的Hello World测试程序已经可以正常运行。