解决Idea创建的maven Web项目无法连接mysql数据库

1、解决报错

java.lang.NullPointerException com.yhq.DBconn.selectSql(DBconn.java:37) com.yhq.UserDaoImpl.login(UserDaoImpl.java:24) com.yhq.DengluServlet.doPost(DengluServlet.java:22) javax.servlet.http.HttpServlet.service(HttpServlet.java:647) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) com.yhq.EncodingFilter.doFilter(EncodingFilter.java:20)

java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
init [SQL驱动程序初始化失败!

报错原因是:

执行Class.forName("com.mysql.cj.jdbc.Driver");报错了,捕获的异常是:java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver

解决方法:添加maven:

  <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.12</version>
    </dependency>java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver

发现仍旧报同样的错,原因是,虽然mysql-connector-java   包加载到项目里了,但是并不在tomcat中

常规的tomcat部署方式是  直接部署到${TOMCAT_HOME}/webapps下

但是idea用的tomcat部署不是常规的部署方式:

CATALINA_HOME是Tomcat的安装目录,CATALINA_BASE是Tomcat的工作目录。如果我们想要运行Tomcat的 多个实例,但是不想安装多个Tomcat软件副本。那么我们可以配置多个工作目录,每个运行实例独占一个工作目录,但是共享同一个安装目录 Tomcat每个运行实例需要使用自己的conf、logs、temp、webapps、work和shared目录,因此CATALINA_BASE就 指向这些目录。 而其他目录主要包括了Tomcat的二进制文件和脚本,CATALINA_HOME就指向这些目录。

 

在这里没有加载mysql-connector-java   包,因此会报错,正确操作是:选中下面的jar包后,右键,put into /WEB-INF/lib,然后就加载到lib中。如果重启后依旧报同样的错,则删除/out和/target 文件夹,再次重启

原文地址:https://www.cnblogs.com/yaohuiqin/p/9836165.html