解决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 文件夹,再次重启