zoukankan      html  css  js  c++  java
  • IDEA13中配置struts错误:ClassNotFoundException: org...dispatcher.ng.filter.StrutsPrepareAndExecuteFilter +找不到java程序包 解决办法

    问题一:ClassNotFoundException: org...dispatcher.ng.filter.StrutsPrepareAndExecuteFilter解决办法

             1、确保所有struts2所需要的包都导进去了(红色标记的),如图:

         

             2、将外部lib下的包都复制到WEB-INFO下:

    当再次启动tomcat的时候就可以了。IDEA会把src目录下的所有非*.java文件复制到WEB-INF/classes目录下,所以Tomcat说找不到所需要的类。

    相同问题也可参见如下:(具体见原文地址:http://blog.csdn.net/njnu_mjn/article/details/6684661)

         

    一开始,我是依照某本教材,配置了User Libraries(名为struts-2.2.3, 可供多个项目多次使用), 然后直接把struts-2.2.3引入过来(这个包不会真正的放在项目文件夹下): 

    可是一运行就出现如题所示的错误,程序无法启动,具体错误如下:

    严重: Exception starting filter struts2
    java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:269)
    at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4071)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4725)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
    at org.apache.catalina.core.StandardService.start(StandardService.java:525)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

    在Google里baidu了一下,得不到有效的解决方案。根据错误提示,意思是找不到类org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter,可是我确实手动找到了这个类啊:

    为了确保类的名称没有拼写错误,右击上图的StrutsPrepareAndExecuteFilter.class文件,选择"Copy Qualified Name"(复制精确名称), 粘贴到web.xml文件的相应位置,保存重运行,出现同样的错误,证明类的名称没有拼写错误。

    最后我弃用了User Libraries, 手动将Struts2的相关jar复制到/webContent/WEB-INF/lib目录下:

    重新运行程序,成功!

    也就是说,Tomcat默认从WEB-INF/目录下加载资源,Eclipse在发布程序的时候,并没有把User Libraries的相关资源拷贝到WEB-INF/目录下(Eclipse会把src目录下的所有非*.java文件复制到WEB-INF/classes目录下),所以Tomcat说找不到所需要的类。

    其他解决方案

    本文的评论中:

    1. whbaicxy同学给出了其他的解决方案:Eclipse下User Library的发布. 请各位同学尝试一下, 期待各位把解决的结果写在本文下面的评论中.

    2. orangekent同学的解决方案:

    我也遇到此情况,但解决办法非常简单。
    原因是为什么tomcat没有把jar包拷贝到运行环境?因为我们在配置tomcat的时候选择了“调试模式”,即“debug”;需设置为“生产模式”,即“run”,之后重新部署即可。
    模式设置位置:myeclipse--preferences--servers--tomcatxx--launch选择“run mode”。

     

    注:

    工具版本:

    Tomcat: 6.0.32

    Eclipse Java EE: 3.6.2

    Struts2: 2.2.3

    截图工具:QQ

    图片编辑:mspaint

       问题2:找不到java程序包的问题;

                在IDEA中,使用快捷键“ctrl+shift+alt+s”,弹出“Project Structure”窗口,选择“libraries”,点击“+”号,选择“java”,然后选择tomcat的安装目录,在tomcat目录的

           lib下选择两个jar包,如下图:

    启动tomcat后成功。

                 

  • 相关阅读:
    XSS的本质和防御
    关于网站的数据安全总结
    教培行业的复杂性
    教育到底想要什么(一)
    如何在流中重复获取body数据内容
    教育到底想要什么(二)
    鼓吹海
    翻译:三分钟学懂JSON
    翻译:ASP.NET MVC 3:Razor的隐式和显示代码嵌入
    分享到各种热门网站的html代码实现
  • 原文地址:https://www.cnblogs.com/laogai/p/4092902.html
Copyright © 2011-2022 走看看