jdbc指定的类不是驱动程序无法将mysql connector/j 8.0添加到netbeans 8.0

v2g6jxz6  于 2021-06-19  发布在  Mysql
关注(0)|答案(2)|浏览(431)

我无法在netbeans中设置mysql 8.0jdbc驱动程序。有人能帮忙吗?
我的NetBeans8.0IDE是使用旧版本的MySQLJDBC驱动程序5.1.23设置的。我将mysql升级到8.0,并试图在netbeans中设置一个新的jdbc驱动程序,因为旧的驱动程序无法连接到新的db(*请参阅最后的注解)。
这些是我遵循的步骤。
步骤1:我从中删除了旧的mysql驱动程序jar文件 D:\Program Files\NetBeans 8.0\ide\modules\ext 复制了新的 mysql-connector-java-8.0.12.jar 文件并重新启动ide。
步骤2:在“服务”选项卡中 Databases 我右键单击 Drivers 以及 New Driver...
步骤3:在显示的对话框中,单击 Add... 按钮,然后我选择新的驱动程序jar D:\Program Files\NetBeans 8.0\ide\modules\ext\mysql-connector-java-8.0.12.jar 在这一点上 Driver Class 自动填充 com.mysql.jdbc.Driver 我打不到球 OK 因为有消息 Specified class is not a driver (java.sql.Driver)
我试着把它改成com.mysql.cj.jdbc.driver,但它仍然给出了相同的消息。
我从jar文件反编译了com.mysql.jdbc.driver,得到如下结果:

package com.mysql.jdbc;

import java.io.PrintStream;
import java.sql.SQLException;

public class Driver
  extends com.mysql.cj.jdbc.Driver
{
  public Driver()
    throws SQLException
  {}

  static
  {
    System.err.println("Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.");
  }
}

对于com.mysql.cj.jdbc.driver,我得到了这个

package com.mysql.cj.jdbc;

import java.sql.DriverManager;
import java.sql.SQLException;

public class Driver
  extends NonRegisteringDriver
  implements java.sql.Driver
{
  public Driver()
    throws SQLException
  {}

  static
  {
    try
    {
      DriverManager.registerDriver(new Driver());
    }
    catch (SQLException E)
    {
      throw new RuntimeException("Can't register driver!");
    }
  }
}

所以com.mysql.jdbc.driver扩展了实现java.sql.driver的com.mysql.cj.jdbc.driver,所以我不知道错误是怎么回事。
有人知道怎么解决吗?我试过一个6.0的驱动程序,却得到了同样的错误。5驱动程序工作,但无法连接到数据库。
旁注。使用旧的5驱动程序,我在尝试连接到数据库时遇到了classcastexception。bigint不能长时间使用。当我将应用程序中的驱动程序更改为新的驱动程序时,问题就消失了。

i1icjdpr

i1icjdpr1#

使用 Connection Properties 按钮并添加具有字段名的属性 serverTimezone 和价值 UTC .
如果错误是由时区问题引起的,则应该可以这样做。

bmvo0sr5

bmvo0sr52#

首先,我成功地使用了 mysql-connector-java-8.0.12.jar 作为netbeans 8.2上mysql 8.0的驱动程序,它肯定可以工作:

我看不出你的问题有什么明显的原因,但你可以尝试解决一些问题:
在新的jdbc驱动程序屏幕截图中,netbeans正在命名驱动程序mysql(connector/j driver)(1)。可能是因为您已经有了一个名为mysql(connector/j driver)的驱动程序,您的第一个屏幕截图证实了这一点。为什么要为mysql添加第二个驱动程序?如果没有好的理由,可以删除旧的,然后再尝试添加驱动程序吗?
检查8.0.12驱动程序的多个示例,并删除文件存储区中任何旧的mysql 5.x和mysql 8.x驱动程序,除非您有充分的理由保留它们中的任何一个。
connector/j的下载页面声明“我们建议您使用md5校验和和和gnupg签名来验证您下载的包的完整性”。是你干的吗?不太可能,但可能是您的文件已损坏。另外,请注意,在下载windows驱动程序时,必须选择“与平台无关”。
netbeans可能正在缓存导致此问题的内容。这只是我的一个疯狂和绝望的猜测,没有任何证据支持它,但你可以轻松和安全地删除缓存,以消除它的可能性:
帮助>关于
向下滚动并找到缓存目录的路径。
关闭netbeans并删除该目录。
启动netbeans并重试。
检查netbeans日志以了解可能的问题:
重复创建驱动程序的尝试。
查看>ide日志并查看日志中最新的条目。
netbeans8.0可能有问题,因为它已经相当旧了。是否可以升级到8.2或9.0版本?
根据op评论中的反馈更新:
op报告问题的原因由netbeans日志中的以下消息给出:

INFO [org.netbeans.modules.db.explorer.dlg.AddDriverDialog]: Got an
exception trying to load class com.mysql.jdbc.Driver during search for
JDBC drivers in driver jar(s): java.lang.UnsupportedClassVersionError:
com/mysql/jdbc/Driver : Unsupported major.minor version 52.0. Skipping
this class...

connector/j 8.0驱动程序需要java 8:
它是用于java8平台的mysql驱动程序。对于Java7或更早版本,请改用connector/J5.1。
因此,在netbeans.conf中将netbeans的默认平台从jdk7更新为jdk8就解决了这个问题。

相关问题