11.1

关于tomcat不好识别jar包
根据报错信息和之前的排查,问题的核心是 MySQL 驱动未被 Tomcat 正确加载。以下是最终的解决方案,按步骤执行即可彻底解决:

步骤 1:创建测试页面,验证驱动是否真的未加载

在  src/main/webapp  下新建  testDriver.jsp ,代码如下:

jsp

<%@ page import="java.sql., java.util." %>

驱动加载测试

已加载的 JDBC 驱动:

    <% Enumeration drivers = DriverManager.getDrivers(); boolean mysqlDriverFound = false; while (drivers.hasMoreElements()) { Driver driver = drivers.nextElement(); out.println("
  • " + driver.getClass().getName() + "
  • "); if (driver.getClass().getName().equals("com.mysql.cj.jdbc.Driver")) { mysqlDriverFound = true; } } if (!mysqlDriverFound) { out.println("
  • 未找到 MySQL 驱动!
  • "); } %>

数据库连接测试

<% String url = "jdbc:mysql://localhost:3306/ke_10_20?serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true"; String user = "root"; String pwd = "114514"; try { Connection conn = DriverManager.getConnection(url, user, pwd); out.println("

✅ 连接成功!

"); conn.close(); } catch (SQLException e) { out.println("

❌ 连接失败: " + e.getMessage() + "

"); } %>  

部署后访问  http://localhost:8080/try_myjava-1.0-SNAPSHOT/testDriver.jsp ,若显示“未找到 MySQL 驱动”,则继续下一步。

步骤 2:强制将驱动放入 Tomcat 全局  lib  目录

1. 找到 Tomcat 安装目录的  lib  文件夹(如  E:\Tomcat\apache-tomcat-11.0.13\lib )。
2. 复制  mysql-connector-j-8.4.0.jar  到该目录(确保文件完整,大小约 2.5MB)。

步骤 3:修改  DBUtil.java ,显式加载驱动(终极保障)

java

package com.example.riyang;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBUtil {
// 静态代码块:强制加载驱动,若失败直接抛异常
static {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
System.out.println("MySQL 驱动加载成功!");
} catch (ClassNotFoundException e) {
throw new RuntimeException("驱动加载失败,请检查 Tomcat/lib 目录", e);
}
}

private static final String URL = "jdbc:mysql://localhost:3306/ke_10_20?serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true";
private static final String USER = "root";
private static final String PASSWORD = "114514";

public static Connection getConnection() throws SQLException {
    return DriverManager.getConnection(URL, USER, PASSWORD);
}

public static void close(AutoCloseable... resources) {
    for (AutoCloseable res : resources) {
        if (res != null) try { res.close(); } catch (Exception e) {}
    }
}

}

步骤 4:彻底清理并重新部署

1. 关闭 Tomcat(执行  shutdown.bat )。
2. 删除 Tomcat  webapps  下的  try_myjava-1.0-SNAPSHOT  文件夹和 WAR 包。
3. 执行  mvn clean package -U  重新打包。
4. 将新 WAR 包复制到  webapps  目录,启动 Tomcat( startup.bat )。

步骤 5:验证最终结果

  • 访问  testDriver.jsp ,若显示“MySQL 驱动加载成功”且连接测试通过,说明问题解决。
  • 再访问业务页面(如提交日报),应能正常连接数据库。

原理说明

Tomcat 11 的类加载机制对 Web 应用的隔离性较强,将驱动放入全局  lib  目录可确保其被 Tomcat 的根类加载器加载,从而被所有 Web 应用识别。同时, Class.forName  显式加载驱动可避免自动注册失败的问题。

按此流程操作后,“No suitable driver” 错误将彻底解决。

posted @ 2025-11-01 23:27  喜欢写轻小说的日央  阅读(5)  评论(0)    收藏  举报