使用tomcat产生的java.lang.ClassNotFoundException: com.mysql.jdbc.Driver问题

 当使用tomcat连接数据库,如果启动服务器,一直都是报错:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver。

查看具体出错代码行是:Class.forName(DRIVER_CLASS)

1、首先可能是连接出现问题

对于代码Sring部分进行排查

String DRIVER_CLASS = "com.mysql.jdbc.Driver";
String URL = "jdbc:mysql://localhost:3306/book_lib";
String USER = "root";
String PWD = "123456";

发现没有问题

2、对于查看web项目文件中是否包含JDBC的驱动包

将mysql-connector-java-5.1.45-bin.jar文件导入到工程的web/WEB-INF/lib中

3、导入后发现依旧报错,根据网上排查发现是没有配置Tomcat连接池

在Tomcat的conf/server.xml中配置 
打开tomcat的conf/server.xml文件,找到节点:

<GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在该节点中加入相关的池配置信息:

<GlobalNamingResources>
             <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />

             <!--配置mysql数据库的连接池, 
                需要做的额外步骤是将mysql的Java驱动类放到tomcat的lib目录下        
               -->
             <Resource name="jdbc/mysqlds" 
              auth="Container" 
              type="javax.sql.DataSource" 
              username="root" 
              password="root" 
              maxIdle="30" 
              maxWait="10000" 
              maxActive="100"
              driverClassName="com.mysql.jdbc.Driver"
              url="jdbc:mysql://localhost:3306/jsp" />
  </GlobalNamingResources>
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

在tomcat的conf/context.xml文件中的节点中加入如下内容

<ResourceLink name="jdbc/mysqlds" global="jdbc/mysqlds" type="javax.sql.DataSource"/>
 
 
  • 1

然后在web项目中的WEB-INF目录下的web.xml中配置

<resource-ref>
      <description>mysql数据库连接池</description>
      <res-ref-name>jdbc/mysqlds</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
      <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

重启服务器

4、发现依旧报错,继续百度原因,发现是

在java项目中,只需要引入mysql-connector-java-5.1.7-bin.jar就可以运行java项目。

在web项目中,当Class.forName("om.mysql.jdbc.Driver");时myeclipse是不会去查找字符串,不会去查找驱动的。所以只需要把mysql-connector-java-5.1.7-bin.jar拷贝到tomcat下lib目录就可以了,idea中也是如此

于是成功解决问题




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值