Java Web项目运行一直提示ClassNotFoundException

初学JSP+Servlet,今天在写一个小项目的时候,启动tomcat后,在网页输入地址一直显示ClassNotFoundException
这里写图片描述

而控制台一直输出java.sql.SQLException: No suitable driver found for jdbc:mysql://127.0.0.1:3306/jdbc

我看了看我之前写的项目,也没有出现过这种情况啊,况且我的jar包已经导入到Java Resources文件夹下的Libraries下了。我实在搞不懂错在哪,代码也反复检查了好几遍,确定没有错误。后来我仔细对比了两个项目,发现了一个差别,那就是一个项目的WEB-INF文件夹下的lib文件夹里有jdbc的jar包,另一个项目的lib文件夹下没有。我恍然大悟,原来如此,于是一顿操作,把jar包copy到lib文件夹下,运行就没有问题了。



我思考了一下,觉得应该是这样的,以前学习jdbc的时候,还没有涉及到Java web,只是单纯的用Java代码去读取数据库,然后输出结果到控制台,我们只需要把jar包导入到Libraries下就行了。但现在我们写的是Java web项目,它不是通过本地的JRE去运行的,它是通过Tomcat到web服务器上去运行的,所以你导入在Libraries的jar只是给你的Java代码用,保证它能正确运行并和数据库进行交互,但要在browser里运行,你就得让Tomcat认识它了,所以你还得在lib文件夹下导入要用到的jar包才行。

以上只是我的猜想,如有错误,欢迎批评指正。



扩展一下其他的知识

Tomcat有自身的类加载器,它的四组目录结构

  • common
  • server
  • shared
  • webapps

对应4个不同的自定义类加载器,

  • CommonClassLoader
  • CatalinaClassLoader
  • SharedClassLoader
  • WebappClassLoader

WebappClassLoader加载器专门负责加载webapps下面各个web项目的WEB-INF下的类库。而我们通过user library引入的jar包自然不会被WebappClassLoader加载器加载,所以必然会报ClassNotFoundException。

关于Tomcat类加载机制,有兴趣的同学可以看看这篇https://www.cnblogs.com/xing901022/p/4574961.html



个人博客 http://www.codeliu.com

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值