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 文件夾,再次重啟


