/ / Driver nie znaleziono wyjątek JDBC - java, mysql, jdbc

Sterownik nie znalazł wyjątku JDBC - java, mysql, jdbc

Wciąż otrzymuję kolejny wyjątek podczas łączenia się z bazą danych od zaćmienia.

java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at connection.ConnectionFactory.<init>(ConnectionFactory.java:29)
at connection.ConnectionFactory.<clinit>(ConnectionFactory.java:25)
at dao.StudentDAO.insert(StudentDAO.java:53)
at bll.StudentBLL.insertStudent(StudentBLL.java:39)
at start.Start.main(Start.java:23)

Jednak połączenie jest ustanowione, mogęczytając z bazy danych, mogę w nim pisać, ale wyjątek nie znika. Dodałem plik mysql-connector-java-5.1.45-bin do pliku ścieżki ze ścieżką budowania i pojawia się w sekcji biblioteki. Uważam, że adres URL, użytkownik i hasło są poprawnie napisane, ponieważ mogę pisać w DB. Połączenie ustalane jest przez:

   try {
connection = DriverManager.getConnection("jdbc:mysql://localHost:3306/schooldb","root","");
} catch (SQLException e) {
LOGGER.log(Level.WARNING, "An error occured while trying to connect to the database");
e.printStackTrace();
}
return connection;
}

Kod dla sterownika to:

  private static final String DRIVER = "com.mysql.cj.jdbc.Driver";
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}

Pracuję z eclipse Oxygen w projekcie Maven. Baza danych jest tworzona za pomocą MYSQLWorkbench 6.0CE.

Ale nie mam pojęcia, co jest złego w sterowniku.

Odpowiedzi:

0 dla odpowiedzi № 1

Myślę, że twoja nazwa kierowcy jest niepoprawna Oto sterownik, którego używam, spróbuj

com.mysql.jdbc.Driver

również wpisz "H" w lokalnym małym pismie

Jeśli powyższe rozwiązanie nie działa:

1: usuń import com.mysql.cj.jdbc.* 2: Użyj tego sterownika private static final String DRIVER = "com.mysql.cj.jdbc.Driver";


0 dla odpowiedzi nr 2

Problem polega na tym, że używasz sterownika MySQL Connector / J 5.1.45, który używa nazwy klasy sterownika com.mysql.jdbc.Driver, ale spróbuj załadować nazwę klasy sterownika wprowadzoną w nowym sterowniku MySQL Connector / J 8.x.

Albo uaktualnij do MySQL Connector / J 8.0.11 (dostępny na stronie https://dev.mysql.com/downloads/connector/j/) lub - jeśli chcesz nadal korzystać z wersji 5.1.45 - użyj

private static final String DRIVER = "com.mysql.jdbc.Driver";

Oprócz tego, dla zgodności z poprzednimi wersjami, MySQL Connector / J 8.x również zachowuje klasę powyżej do załadowania.

Technicznie, ładowanie sterownika w ten sposób nie jest konieczne nawet w wielu sytuacjach ze względu na JDBC 4 i wyższe automatyczne ładowanie sterowników.