簡體   English   中英

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver even after using the mySql Maven Dependency on Intellij

[英]java.lang.ClassNotFoundException: com.mysql.jdbc.Driver even after using the mySql Maven Dependency on Intellij

我正在將 Intellij 用於 servlet 項目並使用 maven

 <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>6.0.6</version>
 </dependency>

據我所知,在 tomcat 網絡服務器上部署戰爭時,這應該處理所有與類路徑相關的問題。

但我得到

08-Apr-2017 13:40:37.047 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /Applications/tomcat/webapps/manager 08-Apr-2017 13:40: 37.092 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /Applications/tomcat/webapps/manager has finished in 44 ms java.lang.ClassNotFoundException: com.mysql.jdbc. Driver at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1285) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119) at Z93F725 A07423FE1C889F448B33D21F46Z.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:264) at com.saurabh.testdb.TestDBServlet.doGet(TestDBServlet.java:34) at javax.servlet.http. HttpServlet.service(HttpServlet.java:635) at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230) at org.apache .catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.apache.Z1B359D8753858B55BEFA04451067AAED6D2CZDBBBF。 573C86B18526296117Z.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java: 165) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase .invoke(AuthenticatorBase.java:478) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) at org.ZB6EFD606D118D 0F62066E31419FF04CCZ.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve. java:87) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783) at org.apache.coyote.AbstractProcessorLight .process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:798) at org.ZB6EFD606D118D0F620 66E31419FF04CCZ.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1441) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor. runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)在 java.lang.Thread.run(Thread.java:745)

這是我加載驅動程序的代碼

package com.saurabh.testdb;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;

@WebServlet("/TestDBServlet")
public class TestDBServlet extends HttpServlet {

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    //set up connection variable
    String jdbcUrl = "jdbc:mysql://localhost:3306/web_customer_tracker?useSSL=false";
    String user = "springstudent";
    String pass = "sringstudent";
    String driver = "com.mysql.jdbc.Driver";

    try {

        PrintWriter out = resp.getWriter();

        out.println("Connecting to database: " + jdbcUrl);

        Class.forName(driver);

        Connection myConn = DriverManager.getConnection(jdbcUrl, user, pass);

        out.println("Connection successful!!!");

        myConn.close();

    } catch (Exception exc) {
        exc.printStackTrace();
    }
    }
}

您必須手動將jdbc_connector添加到 tomcat 服務器,您應該將 jar 包含到此文件夾$TOMCAT_HOME/lib

剛剛復制了你的錯誤。 好像新版本中驅動的名字變了。 當您下載 maven 依賴項時,最好使用最新的穩定版本 - 這樣您就可以從社區獲得更好更快的支持。 `com.mysql.cj.jdbc.Driver' 這是我得到的錯誤信息:

正在加載 class com.mysql.jdbc.Driver'. This is deprecated. The new driver class is com.mysql.jdbc.Driver'. This is deprecated. The new driver class is com.mysql.jdbc.Driver'. This is deprecated. The new driver class is com.mysql.cj.Z84BEFFD3A0D49636A58CE6080CAA877C。 驅動通過SPI自動注冊,一般不需要手動加載驅動class。 com.mysql.cj.jdbc.exceptions.CommunicationsException:通信鏈路故障

IntelliJ 終極版的答案

您可以添加您的JDBC 連接器 jar 文件來運行配置:

Tomcat服務器運行配置

添加jar 文件

將 jar 文件添加到應用程序服務器庫

或者您可以簡單地將 jar 添加到$TOMCAT_HOME/lib

一般默認路徑為C:\Program Files\Apache Software Foundation\Tomcat 9.0\lib

在此處輸入圖像描述

使緩存無效並重新啟動

單擊此處了解如何使緩存無效

從給定的鏈接mysql-connector.jar下載 mysql-connector.jar 文件

apache-tomcat-10.0.23 -> lib -> mysql-connector.jar

只需打開 tomcat 文件夾和 go 到 lib 文件夾,然后將 mysql-connector.jar 文件粘貼到那里。 它對我有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM