新手Struts2启动的时候ClassNotFoundException? 财富值90

2016-10-15 17:57发布

部署环境是tomcat8 + struts2.3.20 + IDEA2016

这是目录树


这是Tomcat Localhost Log的报错信息,我的包都已经正确引入了啊,为什么会ClassNotFoundException呢?

java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

15-Oct-2016 11:11:02.905 SEVERE [RMI TCP Connection(2)-127.0.0.1] org.apache.catalina.core.StandardContext.filterStart Exception starting filter struts2  java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter     at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333)     at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167)     at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:518)     at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:499)     at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118)     at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:258)     at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105)     at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4700)     at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5340)     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)     at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)     at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)     at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1696)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.lang.reflect.Method.invoke(Method.java:498)     at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300)     at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)     at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)     at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:484)     at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:433)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.lang.reflect.Method.invoke(Method.java:498)     at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300)     at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)     at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)     at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468)     at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)     at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309)     at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1401)     at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.lang.reflect.Method.invoke(Method.java:498)     at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:323)     at sun.rmi.transport.Transport$1.run(Transport.java:200)     at sun.rmi.transport.Transport$1.run(Transport.java:197)     at java.security.AccessController.doPrivileged(Native Method)     at sun.rmi.transport.Transport.serviceCall(Transport.java:196)     at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)     at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)     at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)     at java.security.AccessController.doPrivileged(Native Method)     at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)     at java.lang.Thread.run(Thread.java:745)

web.xml内容,IDEA自动帮我新建的,没有修改过

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"          version="3.1">     <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> </web-app> 
7条回答

Struts 已经不用再学了。如果不是一定要满足课业要求,直接跳过这个框架,学习别的。(因为过时很多年了)

跟楼上说的那样把 struts相关的包 复制到 lib 目录。

————————————————————————————————
不用继续贴代码了,因为你这情况跟代码无关。先说原因:缺少依赖的 jar 包。
建议:

用 Maven 管理依赖,不要用 IDE 软件自带的扩展功能导入某个框架的包。不懂可以接触一下,很容易的。

你手动把jar包复制到/WEB-INF/lib目录里面试试。

上面的是 lib 目录(自己存放的 jar 包目录)
下面的是运行Tomcat的时候,自动构建项目时候的输出目录,有一个 lib 目录。只有这里存在依赖的 jar 包,就代表运行时候有正确的依赖包。

回复:

一周热门 更多>