struts2.2.1 启动Tomcat问题解决

来源:互联网 发布:服装cad软件下载 编辑:程序博客网 时间:2024/06/06 12:37

刚刚解决了一个问题。在写struts HelloWorld时候每次启动Tomcat都会出现如下错误:

 

 

警告: Could not create JarEntryRevision for [jar:file:/F:/javaWorkspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/struts_helloworld/WEB-INF/lib/struts2-core-2.2.1.jar]!

java.lang.NoClassDefFoundError: org/apache/commons/io/output/NullOutputStream

at com.opensymphony.xwork2.util.FileManager$JarEntryRevision.build(FileManager.java:307)

at com.opensymphony.xwork2.util.FileManager.loadFile(FileManager.java:145)

at com.opensymphony.xwork2.util.FileManager.loadFile(FileManager.java:105)

。。。

 

Caused by: java.lang.ClassNotFoundException: org.apache.commons.io.output.NullOutputStream

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)

... 29 more

。。。

 

严重: Dispatcher initialization failed

java.lang.RuntimeException: java.lang.reflect.InvocationTargetException

at com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector.inject(ContainerImpl.java:295)

。。。

 

Caused by: java.lang.IllegalArgumentException: Javassist library is missing in classpath! Please add missed dependency!

at ognl.OgnlRuntime.<clinit>(OgnlRuntime.java:165)

... 38 more

Caused by: java.lang.ClassNotFoundException: javassist.ClassPool

。。。

 

 

然后提示404页面找不到的错误。

 

解决问题参考http://apps.hi.baidu.com/share/detail/22911553上的解答

 

才查出来我引入jar包到WEB-INF/lib的时候是按照书本来的,书本上的struts可能版本没那么高,有commons-io-1.3.2.jar和

javassist-3.7.ga.jar包不需要引入,但在struts2.2.1版本中就必须引入。需要注意的是这两个jar包在struts的Lib文件夹下是没有的,要去struts-2.2.1/apps里的war文件的lib目录下找(关于war的解压与发布此处就不作说明了)。这样就搞定了~~

 

  这也提醒了我,以后在新版本出来后,不要盲目按书本来,也要参考随新版本发布的例子,这也很重要。

 

  下面引用http://down.51cto.com/data/134512上的内容,对各个jar文件的功能稍作描述:

 

 

  • Struts2最新版本2.2.1中所设计的核心库文件,包括以下内容:
    struts2-core-2.2.1.jar:Struts2框架的核心类库。
    xwork-core-2.2.1.jar:Xwork核心类库,Struts2在其上构建。
    ognl-3.0.jar:对象图导航语言(Object Graph Navigation Language),它是一种功能强大的表达式语言(Expression Language,简称为EL),通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。
    freemarker-2.3.16.jar:Struts 2的UI标签的模板使用FreeMarker编写。
    commons-fileupload-1.2.1.jar:文件上传组件,2.1.6版本后必须加入此文件。
    commons-io-1.3.2.jar:IO输入输出流组件,主要完成文件的读写功能。
    javassist-3.7.ga.jar:Javassist是一个开源的分析、编辑和创建Java字节码的类库。
    -------------------------------------------------------------------
    commons-logging-1.0.4.jar:ASF出品的日志包,Struts2框架使用这个日志包来支持Log4J和JDK 1.4版本之上的日志记录。