如题,我的MyEclipse版本是8.6的,Java版本是1.6.21的,Struts是2.2.1的
下面是Tomcat的问题描述
警告: Could not create JarEntryRevision for [jar:file:/D:/Server/apache-tomcat-7.0.0/webapps/webDemo/WEB-INF/lib/struts2-core-2.2.1.jar]!
java.lang.NoClassDefFoundError: org/apache/commons/io/output/NullOutputStream

严重: Premature end of file. at (null:2:1)
org.xml.sax.SAXParseException: Premature end of file.

严重: Dispatcher initialization failed
Unable to load configuration. - file:/D:/Server/apache-tomcat-7.0.0/webapps/webDemo/WEB-INF/classes/struts.xml:2:1

Caused by: Unable to load file:/D:/Server/apache-tomcat-7.0.0/webapps/webDemo/WEB-INF/classes/struts.xml - file:/D:/Server/apache-tomcat-7.0.0/webapps/webDemo/WEB-INF/classes/struts.xml:2:1

Caused by: Premature end of file. - file:/D:/Server/apache-tomcat-7.0.0/webapps/webDemo/WEB-INF/classes/struts.xml:2:1

Caused by: org.xml.sax.SAXParseException: Premature end of file.

严重: Exception starting filter struts2
Unable to load configuration. - file:/D:/Server/apache-tomcat-7.0.0/webapps/webDemo/WEB-INF/classes/struts.xml:2:1

下面是我的struts.xml
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

<!--指定全局国际化资源文件 base名-->
<constant name="struts.custom.i18n.resources" value="messageResource"/>
<!--指定国际化编码所使用的字符集-->
<constant name="struts.il8n.encoding" value="GBK"/>
</struts>
还有web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <!--定义Struts 2的FilterDispatcher的Filter-->
  <filter>
   <!--定义核心Filter的名字-->
   <filter-name>struts2</filter-name>
   <!--定义核心Filter的实现类-->
   <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
  </filter>
  <!--FilterDispatcher用来初始化Struts 2并且处理所有请求-->
  <filter-mapping>
   <filter-name>struts2</filter-name>
   <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>
请问是怎么回事啊

解决方案 »

  1.   

    1. 看看是不是有jar包冲突
    2. 检查你的struts2的那个jar包是否是正常的
      

  2.   

      请问下你的struts.xml放在哪呢??检查下。我觉得最好放到src下。另看看你的struts2的jar包。
      

  3.   

    谢谢大家关注哈,
    另外你们说的jar包冲突怎么看,还有我的structs.xml放在classes目录下,有问题吗
      

  4.   

    jar包名字差不多相同,就是后面版本不同我没这样放过,但是放在src目录下,最后发布时也会自动放到classes目录下
      

  5.   

    你的jar包是不是有两个不同版本,或者与其他包邮冲突
      

  6.   

    应该是jar包的版本不对,或和现有jar包有冲突
      

  7.   

    1. 看看是不是有jar包冲突
    2. 检查你的struts2的那个jar包是否是正常的
      

  8.   

    包的版本不对?可是我的版本是最新的即struts 2.2.1难道不能用吗,那伤脑筋了,旧版本不知哪里下
    我用的包分别是:
    commons-logging-1.0.4.jar
    freeer-2.3.16.jar
    ognl-3.0.jar
    xwork-core-2.2.1.jar
    struts2-core-2.2.1.jar
    就放在我开发的程序路径的lib下面
    Tomcat下的lib我没放
    请问大家是什么问题啊,真的是版本问题吗
      

  9.   

    下面是我安装MyEclipse后主要配置(用它编写桌面程序没有问题)
    1.我在Installed JREs设置了jdk1.0.0_21路径
    2.在这里我又jre6的路径
    3.我在MyEclipse选项下设置了TomCat7.x的server为Enalble
    4.新建一个Web项目,把commons-logging-1.0.4.jar
    freeer-2.3.16.jar
    ognl-3.0.jar
    xwork-core-2.2.1.jar
    struts2-core-2.2.1.jar包放进该项目的lib里
    5.然后编写struts.xml,web.xml及相关程序
    这样配置对吗
      

  10.   

    写错了上面第一步是jdk1.6.0_21
      

  11.   

    少包了。应该有一个叫commons-io.jar的包。
      

  12.   

    commons-fileupload-1.2.1.jar
    commons-io-1.3.2.jar
    把这两个包放进去,我用的版本跟你的不一样,加入版本跟你的struts相配的这两个包
    看看会不会好
      

  13.   

    我是重新编写了一遍,这次把Struts2自带的例子的lib下的jar包通通加上去,就多了commons-fileupload-1.2.1.jar
    commons-io-1.3.2.jar这两个包,其它的又写了一遍,这次可以了,当是我还是不清楚原因,早知道原来的留着对比一下,汗,期待高手帮我解疑
      

  14.   

    java.lang.NoClassDefFoundError: org/apache/commons/io/output/NullOutputStream
    大哥 这都看不出来啊 晕  缺IO包啦 在Struts 里面找去
      

  15.   

    我刚开始学struts2,用的MyEclipse8.6 + struts2 2.2.1 + tomcat 7.0.4    运行一个最简单的helloworld都运行不了,是不是这几个凑合在一起不好用啊,我看了好多个版本,拿上去都运行不了
    高手们知道用这几个版本有什么禁忌吗?
      

  16.   

    郁闷,也遇到这种问题。关键我用的包是commons-fileupload-1.2.1.jar
    commons-logging-1.0.4.jar
    freeer-2.3.16.jar
    ognl-3.0.jar
    struts2-core-2.2.1.jar
    xwork-core-2.2.1.jar
    有冲突吗?
      

  17.   

    我也遇到了这样的问题, 我用的STRUTS的版本是2.2.1.1,有两个你少拷贝了:commons-fileupload.jar和commons-io.jar,然后在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>
    改完后, 重新部署到Tomcat上,OK! 我刚刚解决的!
      

  18.   

    不好意思, 落下一个jar包, 这个jar包在struts下lib文件夹下没有, 要去struts/apps/下解压struts2-blank.war这个文件,然后在解压后的文件夹中找WEB-INF/lib/javassist-3.7.ga.jar,然后将javassist-3.7.ga.jar拷贝到你项目的lib文件夹下就可以了, 这次真的OK啦!!!