Указанный класс не является драйвером.Не удается добавить MySQL Connector / J 8.0 в Netbeans 8.0 - PullRequest
0 голосов
/ 20 сентября 2018

Я не могу установить драйвер MySQL 8.0 jdbc в Netbeans.Кто-нибудь может помочь?

Моя среда Netbeans 8.0 была настроена с использованием более старой версии драйвера MySQL JDBC, 5.1.23.Я обновил MySQL до 8.0 и пытаюсь установить новый драйвер JDBC в Netbeans, поскольку старый драйвер не может подключиться к новой БД (* см. Примечание в конце).

Это шаги, которые я выполнил.

Шаг 1: Я удалил старый файл jar драйвера mysql из D:\Program Files\NetBeans 8.0\ide\modules\ext, скопировал новый файл mysql-connector-java-8.0.12.jar и перезапустилIDE.

Шаг 2: На вкладке «Сервисы» в разделе Databases я щелкнул правой кнопкой мыши на Drivers и New Driver...

Netbeans Database Drivers

Шаг 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)

enter image description here

Я попытался изменить его на com.mysql.cj.jdbc.Driver, но он все еще выдал то же сообщение.

Я декомпилировал com.mysql.jdbc.Driver из файла JAR и получил это:

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 расширяет com.mysql.cj.jdbc.Driver, который реализует java.sql. Драйвер, поэтому я не знаю, в чем ошибкаэто все о.

Кто-нибудь есть идеи, как решить эту проблему?Я попробовал драйвер 6.0 и получил ту же ошибку.Драйвер 5 работает, но не может подключиться к БД.

  • Примечание.со старым драйвером 5 я получал ClassCastException при попытке подключения к базе данных.BigInt не может быть брошен на Лонга.Когда я изменил драйвер в приложении на новый драйвер, проблема исчезла.

1 Ответ

0 голосов
/ 21 сентября 2018

Во-первых, я успешно использую mysql-connector-java-8.0.12.jar в качестве драйвера для MySQL 8.0 в NetBeans 8.2, поэтому он определенно работает:

mySqlDriver

НадеюсьЯ не вижу очевидной причины вашей проблемы, но есть несколько вещей, которые вы можете попытаться решить:

  • В вашем новом драйвере JDBC снимок экрана NetBeans называет драйвер MySQL (драйвер Connector / J) (1) .Предположительно, это потому, что у вас уже есть драйвер с именем MySQL (драйвер Connector / J) , и ваш первый снимок экрана подтверждает это.Почему вы пытаетесь добавить второй драйвер для MySQL?Если нет веской причины, можете ли вы удалить старую и затем попытаться добавить драйвер снова?

  • Проверьте наличие нескольких экземпляров драйвера 8.0.12 и удалите все старые MySQLДрайверы 5.x и MySQL 8.x в вашем файловом хранилище, если у вас нет веских причин хранить какие-либо из них.

  • Страница загрузки для Connector / J сообщает о состоянии «Мы предлагаем использовать контрольные суммы MD5 и подписи GnuPG для проверки целостности загружаемых пакетов» .Ты сделал это?Маловероятно, но возможно, что у вас есть поврежденный файл.Также обратите внимание, что при загрузке драйвера для Windows необходимо выбрать «Независимо от платформы» .

  • Возможно, NetBeans кеширует что-то, что вызывает эту проблему.Это просто дикое и отчаянное предположение с моей стороны, без каких-либо доказательств, подтверждающих это, но вы можете легко и безопасно удалить кеш, чтобы исключить его как возможную:

    • Помощь> О
    • Прокрутите вниз и найдите путь к каталогу Cache .
    • Завершите работу NetBeans и удалите этот каталог.
    • Запустите NetBeans ипопробуйте снова.
  • Проверьте журнал NetBeans для возможного понимания проблемы:

    • Повторите попытку создания драйвера.
    • Просмотр> Журнал IDE и просмотр самых последних записей в журнале.
  • Возможно, проблема в NetBeans 8.0, поскольку она довольно старая,Возможно ли обновление до версии 8.2 или 9.0?


Обновление на основе отзывов в комментариях от ОП:

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 :

Это драйвер MySQL для платформы Java 8.Для Java 7 или более ранней версии используйте вместо этого Connector / J 5.1.

Поэтому обновление платформы по умолчанию для NetBeans с JDK 7 до JDK 8 в netBeans.conf решило проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...