我做了一个将Office文件上传到服务器然后读取Office文件内容的一个程序,使用了Struts2框架,读取Office文件内容用的是Tika0.9,可是在Web模式下执行程序总是报出
java.lang.NoSuchMethodError: org.apache.poi.poifs.filesystem.DirectoryNode.iterator()Ljava/util/Iterator;
这个问题。但是通过Java应用程序方式执行却是没有问题,Office文件的内容也能够正确读取,我就奇了怪了!

解决方案 »

  1.   

    NoSuchMethodError  没有如此方法
    struts.xml文件贴出来看看!
      

  2.   

    看看tomcat 下你的应用目录的lib下有没有关poi的包
      

  3.   

    Tika 的包我是自己重新编译的,其中关于POI的部分也是通过Tika自动编译到tika-app-0.9.jar中的,我怕会引发什么版本文题就用其生成的tika-app-0.9.jar文件了。单是相同的代码通过Java应用程序却能正常的读取Office文件。
    Struts配置文件:
    <?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"><!-- START SNIPPET: xworkSample -->
    <struts>
         <constant name="struts.objectFactory" value="spring" />
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="false" />
    <constant name="struts.locale" value="zh_CN" />
    <constant name="struts.i18n.encoding" value="UTF-8" />
    <constant name="struts.serve.static.browserCache" value="false" />
    <constant name="struts.url.includeParams" value="none" />
    <constant name="struts.multipart.maxSize" value="5242880" />
    <constant name="struts.multipart.saveDir" value="d:/workspace"/>

        <package name="default" extends="struts-default" namespace="/">        
            <action name="searchadd" class="cn.zt.ut.action.search.FullSearchAction" method="doAction">
                <result name="success">add.jsp</result>
                <result name="error">err.jsp</result>
            </action>
            <action name="search" class="cn.zt.ut.action.search.FullSearchAction" method="doSearch">
                <result name="success">search.jsp</result>
                <result name="error">err.jsp</result>
            </action>
        </package></struts>
      

  4.   

    项目中的jar和tomcat里面的有冲突  把tomcat中的相应的jar删掉
      

  5.   

    在Tomcat中出了数据库驱动的jar文件,我没有添加其他任何多余的jar文件。
      

  6.   

    在你出错的地方,看看你引用错了文件包了吗?
    报的好像是Iterator的,看看你引得是不是你该用的那个文件。
      

  7.   

    但从异常上看 很可能是poi的jar包问题
      

  8.   

    应该是poi里面的包和外面的冲突了吧.
      

  9.   

    我的应用程序(好用)和Web程序(不好用)都是相同的jar包。我也调整了引用jar文件的次序,但是结果还是一样的啊。
      

  10.   

    没有导入poi的包,所以才会引用不到相应的方法、
      

  11.   

    问题找到了,在我的Web工程下并没有把所有的WEB-INFO\lib\jar文件引入到工程里,有几个低版本的POI的jar包,所以才导致的以上的错误。在此谢谢大家的帮助,祝大家天天有好运!呵呵