尽管向 Maven 添加了 mysql-connector-java 依赖项,但没有找到适合 jdbc 异常的驱动程序

时间:2021-01-17 11:36:41

标签: java mysql maven

我创建了一个新的 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");

        }
}

1 个答案:

答案 0 :(得分:0)

我成功了。在执行程序 using a : to separate the multiple jar files 时,我必须通过命令行将“mysql-connector-java-5.1.38.jar”的路径添加到我的类路径中,如下所示:SimpleDateFormat dateTimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); ... ps.setString(index, dateTimeFormat.format(date)); .

相关问题