【问题标题】:IntelliJ - MySQL ClassNotFoundExceptionIntelliJ - MySQL ClassNotFoundException
【发布时间】:2020-10-30 04:35:46
【问题描述】:

所以我正在尝试使用 IntelliJ 和 MySQL 将远程数据库复制到我的本地数据库中,并且我已经获得了远程数据库的数据。当我尝试与 MySQL 建立连接时出现问题:

public void copyDatabase(Info info){
        try{
            Class.forName("com.mysql.jdbc.Connection");
            localConnection = DriverManager.getConnection("jdbc:mysql://localhost:3306/lsmotor_local_oltp", user, password);
        }catch(SQLException e){
            System.out.println("Problem while trying to connect to local database");
        }
        catch(ClassNotFoundException e){
            System.out.println(e);
        }
        //TODO: Copy Info into local database
}

它一直给我这个错误:java.lang.ClassNotFoundException: com.mysql.jdbc.Connection 这是第二个捕获中打印的内容。

我的项目结构中已经有 mysql-connector-java-8.0.172 库,如代码所示,我希望连接 lsmotor_local_oltp 数据库,我已经创建并执行了它的代码。 我已经检查过了,但大多数帖子都说解决方案是拥有我已经拥有的 mysql-connector 库。 提前致谢,给您带来的不便深表歉意!

【问题讨论】:

  • 鉴于您已经包含了所需的 mysql jdbc 驱动程序库,您应该检查正确的配置参数。请检查您的 MySQL 数据库和驱动程序各自版本的参数,并确保它们兼容。

标签: java mysql sql intellij-idea classnotfoundexception


【解决方案1】:

更新:我发现在我的情况下我需要使用“com.mysql.cj.jdbc.Driver”,但现在弹出 “尝试连接到本地数据库时出现问题” 消息,这意味着现在是 SQLException 而不是 ClassNotFoundException。

【讨论】:

    【解决方案2】:

    检查属性文件中的参数/设置或与mysql JDBC驱动程序相关的东西

    【讨论】:

      【解决方案3】:

      您有异常 java.lang.ClassNotFoundException 因为类 com.mysql.jdbc.Connection 不存在。如果你想连接到你的数据库,你可以使用this tutorial

      【讨论】:

      • 哦,我错了,我使用的是驱动程序,但由于它一直显示 Loading class com.mysql.jdbc.Driver'. This is deprecated. The new driver class is com.mysql.cj.jdbc.Driver'。驱动是通过 SPI 自动注册的,一般不需要手动加载驱动类。 我停止使用它。如果它已被弃用,可以使用什么来代替?顺便感谢您的回复!
      • 我链接的教程适用于新的驱动程序“com.mysql.cj.jdbc.Driver”。您只需要更改方法 Class.forName 中的名称
      • 是的,非常感谢!现在它在sqlexception上说明了服务器时区,这意味着我可能需要更改mysql服务器的服务器时间。
      • 您可以更改服务器的时区,也可以将其添加到数据库 url "?useTimezone=true&serverTimezone={your time zone}"
      【解决方案4】:

      见:https://www.w3resource.com/mysql/mysql-java-connection.php

      您可能没有在类路径中包含 mysql JDBC 连接器库。拥有它后,您应该能够运行示例中的代码。

         Class.forName ("com.MySQL.jdbc.Driver").newInstance ();   <<< this line is the one you want (or something similar)
         String userName = "root";
         String password = "pqrs123";
         String url = "jdbc:MySQL://localhost/sakila";        
         conn = DriverManager.getConnection (url, userName, password);
         System.out.println ("\nDatabase Connection Established...");
      

      【讨论】:

      • 问题是我之前用过forName("com.MySQL.jdbc.Driver"),它说它已被弃用(我使用的是Java版本11.0.2):Loading class com.mysql.jdbc.Driver'. This is deprecated. The new driver class is com.mysql .cj.jdbc.Driver'。驱动程序是通过 SPI 自动注册的,通常不需要手动加载驱动程序类。 当我检查 File -> Project Structure -> Modules 时,它会显示 mysql-connector 并选中该框。以防万一,我将尝试再次构建它。无论如何感谢您的回复!
      猜你喜欢
      • 2017-12-30
      • 1970-01-01
      • 2013-05-27
      • 2016-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多