No suitable driver found for jdbc:mysql://localhost:3306/world

Пишу тестовый проект чтобы разобраться с servlet и базами данных. При соединение с базой данных через main, все работает отлично. Но если хочу запустить servlet через TomCat, то появляется исключение:

No suitable driver found for jdbc:mysql://localhost:3306/world

Проект собирают с помощью maven, туда подключила зависимость sql-connector.

Класс servlet:

    public class servlets extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        PrintWriter writer = resp.getWriter();
        writer.write("<html> <head> <meta charset='utf-8'> <title>Ввод IP-адреса</title> </head> <body> <form> <p>Enter country:</p> <p><input name='Country' type = 'text' size = '20'></p> <p><input type='submit' value='GO'></p> </form> </body> </html>");
        String country = req.getParameter("Country");
        MyDB world = new MyDB();
        ResultSet cities = null;
        try {
            world.conn();
            cities = world.result_cities(country);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        int columns = 0;
        try {
            columns = cities.getMetaData().getColumnCount();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        writer.write("<h1> Cities <h1> ");
        writer.write("<ul>");
        while (true){
            for (int i =1; i <= columns; i ++) {
                try {
                    if (!cities.next()) break;
                } catch (SQLException e) {
                    e.printStackTrace();
                } finally {
                    try {
                        writer.write("<li>" + cities.getString(i) + "</li>" );
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
}

Класс соединения с БД:

public class MyDB {
    private static String URL = "jdbc:mysql://localhost:3306/world";
    private String DB_name;
    private Connection conn;
    private static final String username = "root";
    private static final String password = "rootroot";
    private static String exec_cities_by_country = "SELECT name FROM CITY WHERE COUNTRY_CODE ='";
    public MyDB(){
        //this.DB_name = DB_name;
    }
    public void conn() throws SQLException {
        conn = DriverManager.getConnection(URL , username, password);
    }
    public ResultSet result_cities(String s) throws SQLException {
        Statement stat;
        stat  = conn.createStatement();
        ResultSet result = stat.executeQuery(exec_cities_by_country + s + "';");
        return result;
    }
}

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

<groupId>ru.web.cities</groupId>
<artifactId>web-cities</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>

<properties>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
</properties>

<dependencies>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.27</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>3.3.2</version>
            <configuration>
                <webappDirectory>/sample/servlet/container/deploy/directory</webappDirectory>
            </configuration>
        </plugin>
    </plugins>

</build>

WEB-INF.xml

servlets ru.web.cities.servlets

<servlet-mapping>
    <servlet-name>servlets</servlet-name> <!--имя сервлета-->
    <url-pattern>/home</url-pattern> <!--на какую фразу будет реагировать сервлет-->
</servlet-mapping>

Ответы (1 шт):

Автор решения: Fleckinger

Скорее всего tomcat не загружает драйвер, тут есть несколько возможных вариантов решения:

  1. Явно зарегистрировать драйвер в статическом блоке
static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
  1. Скопировать .jar файл JDBC драйвера в папку $CATALINA_HOME/lib. Стандартный путь для windows может быть таким C:\Program Files (x86)\Apache Software Foundation\Tomcat 9.0\lib
→ Ссылка