JAR包放在WEB-INF/lib子目录报ClassNotFoundException解决方案

来源:互联网 发布:淘宝数据收集 编辑:程序博客网 时间:2024/06/15 06:28

对于Java Web应用依赖的jar包,我们通常会放到WEB-INF/lib目录下,但是笔者喜欢把不同框架的jar包放在不同的子目录下,例如新建一个struts目录存放struts框架的jar包等。
下面是笔者项目结构截图:
这里写图片描述
但是这样会有一个新的问题,项目部署的后启动会报ClassNotFoundException错误:
例如笔者在web.xml配置了spring的监听器:

    <context-param>        <param-name>contextConfigLocation</param-name>        <param-value>classpath:beans.xml</param-value>    </context-param>    <listener>        <listener-class>            org.springframework.web.context.ContextLoaderListener        </listener-class>    </listener> 

应用启动时报错信息如下:

java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1647)    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1493)    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4115)    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4671)    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1041)    at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:964)    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)

具体解决方案如下:
1.在项目上点击右键=>properties,点击Deployment Assembly=>Add。
这里写图片描述
2.选择Java Build Path…,点击Next。
这里写图片描述
3.全选需要发布到WEB-INF/lib路径下的jar包,点击Finish案例。
这里写图片描述
4.点击OK案例,关闭Properties窗口,重新发布应用即可。

0 0
原创粉丝点击