部署后找不到 jdbc mysql 驱动程序

Posted

技术标签:

【中文标题】部署后找不到 jdbc mysql 驱动程序【英文标题】:jdbc mysql driver not found after deploying 【发布时间】:2015-11-21 10:49:54 【问题描述】:

我使用 jersey 开发了一个 REST 应用程序,在哪里连接到数据库(mysql)我使用 jdbc 连接。以下是配置。

static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/DBNAME";

static final String USER = "root";
static final String PASS = "********";

public List<Item> getAll() 
        List<Item> results = new ArrayList<>();

try (Connection conn = (Connection) DriverManager.getConnection(DB_URL,
                USER, PASS);
                Statement stmt = (Statement) conn.createStatement();
                ResultSet rs = stmt.executeQuery("SELECT * FROM items");) 

            while (rs.next()) 
                // Retrieve by column name
                System.out.println(rs.getInt("ID"));
                System.out.println(rs.getString("FormerCode"));
                System.out.println(rs.getString("NewCode"));
                results.add(new Item(rs.getInt("ID"), rs
                        .getString("FormerCode"), rs.getString("NewCode")));

            

         catch (SQLException e) 
            // TODO Auto-generated catch block
            e.printStackTrace();
        

        return results;

    

当我通过 Eclipse 部署时,一切正常。但是当我创建 war 文件并在 tomcat 服务器上手动部署它时,它会出现异常,说没有合适的驱动程序。

No suitable driver found for 'jdbc:mysql://localhost:3306/DBNAME

我已将 mysql-connector jar 文件包含在 WEB-INF/lib 文件夹和 TOMCAT_HOME/lib 文件夹中。但我仍然收到此错误。服务器在 Ubuntu Server 14.04 上运行。

添加 jar 的路径。

src/main/webapp/WEB-INF/lib 
usr/share/tomcat7/lib

似乎是什么问题,因此我已将 jar 文件添加到必要的位置??

【问题讨论】:

寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建最小、完整和可验证的示例。 对不起,我已经包含了代码。 好的,你已经添加了代码,但不清楚你在问什么。你想知道为什么驱动程序没有加载或者你创建了一个不起作用的代码吗?这不是 Web 应用程序的 MCVE。 我在问虽然我已将 jar 文件添加到必要的位置,但为什么它会给出异常。 【参考方案1】:

有时 java 类无法从 lib 文件夹中选择驱动程序的 (mysql java connector jar file) 路径。要消除此问题,您可以在项目的以下目录中提取连接器 jar。

src/main/webapp/WEB-INF/classes

你也可以编译带有mysql_java_connector.jar的类路径引用的java文件。

【讨论】:

WEB-INF 中没有名为 classes 的文件夹。我需要创建这个文件夹吗?【参考方案2】:

答案是当使用 DriverManager 接口创建 JDBC 连接时,始终首先创建 JDBC 驱动程序的实例,以便将其加载到类加载器中。

try 
    // The newInstance() call is a work around for some
    // broken Java implementations

    Class.forName("com.mysql.jdbc.Driver").newInstance();
 catch (Exception ex) 
    // handle the error

谢谢大家。

【讨论】:

以上是关于部署后找不到 jdbc mysql 驱动程序的主要内容,如果未能解决你的问题,请参考以下文章

关于mysql jdbc 驱动问题 为啥一直提示我 找不到可用的驱动,难道是我下载的驱动有问题??

找不到适合'jdbc:mysql:// localhost:3306 / mysql的驱动程序[重复]

Maven:找不到适合 jdbc::mysql://google 的驱动程序

如何修复:“找不到适合 jdbc:mysql://localhost/dbname 的驱动程序”

Openshift - 找不到适合 jdbc:mysql 的驱动程序

找不到适合 jdbc:mysql/localhost:3306/world 的驱动程序