【问题标题】:No suitable driver found for jdbc exception despite adding mysql-connector-java dependency to Maven [duplicate]尽管向 Maven 添加了 mysql-connector-java 依赖项,但没有为 jdbc 异常找到合适的驱动程序 [重复]
【发布时间】:2021-01-17 11:36:41
【问题描述】:

我创建了一个新的 Amazon AWS Ubuntu 16.04 实例并安装了 mysql-server、JDK 8 和 Maven。就是这样,没有安装其他任何东西。然而,在创建了一个简单的测试数据库并尝试运行一个简单的 Java 程序(如下提供)访问该测试数据库以确保 mysql 工作正常后,我得到了臭名昭著的No suitable driver found for jdbc 异常。这没有任何意义,因为我使用的是 JDK 8 并将 mysql-connector-java 添加为依赖项。我整天都在点击数十个类似的 SO 帖子,尝试了最常提出的解决方案,但无济于事。我尝试过的通常推荐的解决方案包括:

  1. 已验证 MySQL 连接字符串符合正确的语法。
  2. 尝试使用 Class.forName("com.mysql.jdbc.Driver").newInstance(); ,我很确定我不需要,因为我使用的是 JDK 8 和 JDK 6 or higher feature "autoloading of JDBC drivers",因此不需要 Class.forName()。

这是我创建的简单数据库

mysql>create database moviedbtest;
mysql>use moviedbtest;
mysql>create table moviestars(
          id varchar(10) primary key,
          name varchar(100) not null,
          birthYear integer
       );
mysql> INSERT INTO moviestars VALUES('145061', 'Angelina Jolie', 1975);
mysql> INSERT INTO moviestars VALUES('855017', 'Clint Eastwood', 1930);

这是我的 Maven 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>org.example</groupId>
    <artifactId>jdbc-test-project</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>
    </dependencies>

</project>

这是一个简单的Java测试程序

import java.sql.*;
public class JDBC1 {

    public static void main(String[] arg) throws Exception {

        //Class.forName("com.mysql.jdbc.Driver").newInstance();

        Connection connection = DriverManager.getConnection("jdbc:mysql:///moviedbtest?autoReconnect=true&useSSL=false", "mytestuser" , "mypassword");


        Statement select = connection.createStatement();
        String query = "Select * from moviestars";
        ResultSet result = select.executeQuery(query);

        ResultSetMetaData metadata = result.getMetaData();
        System.out.println("There are " + metadata.getColumnCount() + " columns");

        }
}

【问题讨论】:

  • @JanezKuhar 第一个建议不适用,因为我没有安装任何服务器,因此没有 lib 文件夹。第二个建议似乎也不适用,因为我很确定我的 JDBC 连接 url 遵循正确的语法。

标签: java mysql maven


【解决方案1】:

我让它工作了。执行程序时,我必须通过命令行将“mysql-connector-java-5.1.38.jar”的路径添加到我的类路径中,using a : to separate the multiple jar files,如下所示:java -cp jdbc-test-project-1.0-SNAPSHOT.jar:/home/ubuntu/.m2/repository/mysql/mysql-connector-java/5.1.38/mysql-connector-java-5.1.38.jar JDBC1

【讨论】:

    猜你喜欢
    • 2018-12-07
    • 2015-05-15
    • 2021-10-21
    • 2020-07-09
    • 2023-03-25
    • 2021-05-09
    • 2012-06-03
    • 2012-02-01
    • 2013-09-06
    相关资源
    最近更新 更多