Java 使用com.mysql.jdbc.Driver加载com.mysql.cj.jdbc.Driver错误

Java 使用com.mysql.jdbc.Driver加载com.mysql.cj.jdbc.Driver错误,java,mysql,jdbc,Java,Mysql,Jdbc,我最近遇到了很多数据库连接问题。 目前的情况是,驱动程序已更新为 适用于linux的mysql-connector-java-8.0.22.jar 当我将操作系统完全安装到20.x时,代码正在运行并被破坏。这导致了太多问题,我恢复到了18.0.4 课程负荷为: try { // The newInstance() call is a work around for some // broken Java implementations //Class.forNa

我最近遇到了很多数据库连接问题。 目前的情况是,驱动程序已更新为 适用于linux的mysql-connector-java-8.0.22.jar

当我将操作系统完全安装到20.x时,代码正在运行并被破坏。这导致了太多问题,我恢复到了18.0.4

课程负荷为:

   try { // The newInstance() call is a work around for some
              // broken Java implementations
//Class.forName("com.mysql.jdbc.Driver").newInstance();
Class.forName("com.mysql.cj.jdbc.Driver").newInstance();
        } catch (Exception ex) {
            if (out != null) {
                out.println("<p>Error while defining database driver: " +
                        "Class.forName: " + ex.getMessage());
                out.println("<p>" + ex.toString() + "<p>");
          //  SKYPE_DEBUG.Log(DatabaseInterface.class.getName(), "mysql v[0] = "+ "\n",ex);
            }
       
        }
任何一个查询选项都会给出相同的错误

使用时:

Class.forName("com.mysql.jdbc.Driver").newInstance();
它开始在线路上抛出以下错误

conn = DriverManager.getConnection(query);          
记录的异常为:

时间戳
2020年11月12日08:38:50.273
日志级别
严峻的
记录器
名称-值对
{levelValue=1000,timeMillis=1605170330273}
记录编号
631
消息ID
完整消息
正在加载类'com.mysql.jdbc.Driver'。这是不赞成的。新的驱动程序类是'com.mysql.cj.jdbc.driver'。驱动程序通过SPI自动注册,通常不需要手动加载驱动程序类。
我已将驾驶员的姓名更改为:

//    Class.forName("com.mysql.jdbc.Driver").newInstance();
Class.forName("com.mysql.cj.jdbc.Driver").newInstance();
但是仍然会得到与上面相同的异常。两个调用都会创建相同的异常

  • 这也不例外。这是一条警告信息

  • 一个“不赞成”的警告告诉你,你不应该再做类似的事情了。你应该阅读它,并注意它实际上说了些什么

  • 在本例中,它告诉您(在大多数情况下)不应该使用
    Class.forName(某些类名称)
    来加载JDBC驱动程序。这已经很久没有必要了

  • 即使您确实使用了
    Class.forName
    ,也不应该对该类调用
    newInstance()
    。这一评论:

     // The newInstance() call is a work around for some
     // broken Java implementations
    
    它已经过时了。20年前可能是真的

  • 你给我们看的所谓“连接代码”根本不是这样。它只是生成一个连接URL


  • 我认为最好的办法是阅读OracleJava教程中的,其中描述了获得JDBC连接的两种正确方法。然后重写您的代码,用其中一种方法建立JDBC连接


    除其他事项外,您将在代码中删除对特定JDBC驱动程序类的脆弱引用,并删除日志中令人讨厌的弃用消息。

    它还会抛出:type Exception report messageInternal Server Error description服务器遇到内部错误,导致无法满足此请求。异常java.lang.NoClassDefFoundError:无法初始化类com.mysql.cj.util.UtilThanks,我遵循了所有建议和链接。这个问题没有改变
     // The newInstance() call is a work around for some
     // broken Java implementations