新建了个项目,想添加spring到项目中。却奇怪的遇到错误。找不到ClassNotFoundException。
一般碰到这个错误都是类没有加载进来,检查web.xml没有异常,检查pom文件正常,在web.xml文件中甚至可以进入到spring的监听器中。
<!-- log4j的配置文件加载 放在最前面才能捕获到spring加载bean的错误,配置文件放根目录才不会有警告-->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.properties</param-value>
</context-param>
<!--加载spring配置文件位置-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:config/spring/applicationContext-*.xml</param-value>
</context-param>
<!--捕捉服务器的启动和停止,触发相应的方法-->
<!-- spring监听器 -->
<!--<listener>-->
<!--<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>-->
<!--</listener>-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
百度之发现其实ecplise中也有人碰到过这种问题,jar明明在却就是找不到,最后的解决方案发现tomcat的应用下面没有lib这个文件夹,导致jar无法放进去,从而出现的这个问题。
下面具体的报错信息:
严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1858)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1701)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:504)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:486)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:113)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4984)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5584)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1859)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
服务器报错信息:
十一月 28, 2016 11:55:00 下午 org.apache.catalina.core.StandardContext startInternal
严重: One or more listeners failed to start. Full details will be found in the appropriate container log file
十一月 28, 2016 11:55:00 下午 org.apache.catalina.core.StandardContext startInternal
严重: Context [/shadow] startup failed due to previous errors
[2016-11-28 11:55:00,241] Artifact shadow:war exploded: Error during artifact deployment. See server log for details.
按照上面ecplise发生的错误,检查idea的配置
如上可以看到文件没有添加进去,
建好之后是这样的
这个时候可以看到文件已经到这里面来了
点击确定,再次运行!项目成功运行!此时,你也可去你的编译目录发现lib下面已经有文件了~
比如我的编译输出路径是这个
打开这个路径果然是jar都在了
如果上面没设置的话,光在编译输出路径建立lib包是没有作用的!
另外最后测试发现,其实,直接直接点击也是可以的