java.lang.IllegalArgumentException: ServletContext must not be null
问题描述:运行部署项目,页面404 ,后台输出如下的异常,翻译说是 “上下文路径不能为空” ,找了一个多小时也没找到原因,最后腆着脸问大佬,一看就发现问题了
原因:项目里有web文件夹和webRoot文件夹(公司的项目,我也不知道为啥有俩),web文件夹下的web.xml是空的,webRoot下的web.xml才实打实的
1 java.lang.IllegalArgumentException: ServletContext must not be null 2 at org.springframework.util.Assert.notNull(Assert.java:112) 3 at org.springframework.web.context.support.WebApplicationContextUtils.getWebApplicationContext(WebApplicationContextUtils.java:115) 4 at org.springframework.web.context.support.WebApplicationContextUtils.getWebApplicationContext(WebApplicationContextUtils.java:105) 5 at fe.res.SpringWebContextImpl.getContextResource(SpringWebContextImpl.java:17) 6 at fe.res.ResourceManage.getContext(ResourceManage.java:179) 7 at fe.messageout.MessageControl.getInstance(MessageControl.java:32) 8 at nl.justobjects.pushlet.servlet.Pushlet.init(Pushlet.java:37) 9 at javax.servlet.GenericServlet.init(GenericServlet.java:158) 10 at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1227) 11 at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1140) 12 at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1027) 13 at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5038) 14 at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5348) 15 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 16 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:753) 17 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:729) 18 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717) 19 at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1733) 20 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 21 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 22 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 23 at java.lang.reflect.Method.invoke(Method.java:498) 24 at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300) 25 at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) 26 at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) 27 at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:484) 28 at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:433) 29 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 30 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 31 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 32 at java.lang.reflect.Method.invoke(Method.java:498) 33 at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300) 34 at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) 35 at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) 36 at com.sun.jmx.remote.security.MBeanServerAccessController.invoke(MBeanServerAccessController.java:468) 37 at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468) 38 at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76) 39 at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309) 40 at java.security.AccessController.doPrivileged(Native Method) 41 at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1408) 42 at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829) 43 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 44 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 45 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 46 at java.lang.reflect.Method.invoke(Method.java:498) 47 at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357) 48 at sun.rmi.transport.Transport$1.run(Transport.java:200) 49 at sun.rmi.transport.Transport$1.run(Transport.java:197) 50 at java.security.AccessController.doPrivileged(Native Method) 51 at sun.rmi.transport.Transport.serviceCall(Transport.java:196) 52 at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:573) 53 at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:834) 54 at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:688) 55 at java.security.AccessController.doPrivileged(Native Method) 56 at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:687) 57 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 58 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 59 at java.lang.Thread.run(Thread.java:748)
总结:
我错就错在配错了 web.xml 和 web文件夹
作者:命运使然
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。