JDBC с классом VSCode не найден

#java #mysql #jdbc #visual-studio-code #connection

#java #mysql #jdbc #visual-studio-code #подключение

Вопрос:

У меня возникли серьезные проблемы с созданием Java-проекта с помощью VS Code с добавлением «mysql-connector-java-8.0.21.jar «. Я выполнил следующие шаги:

  • Создание нового Java-проекта с помощью VS-кода из командной строки
  • Добавляем соединитель mysql, выполнив команду «Добавить библиотеки, на которые ссылаются».

Я попытался использовать оба jdk 11 и 15 (не 8, поскольку VS Code его больше не поддерживает)

Запуск моего кода приводит к ошибке: java.lang.ClassNotFoundException: com.mysql.cj.LocalizedErrorMessages

Вот выдержка из моего кода:

 import java.lang.reflect.InvocationTargetException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class SimpleJDBCApplication {

   static final String DB_URL = "jdbc:mysql://localhost:3306/company";
   static final String DB_DRV = "com.mysql.jdbc.Driver";
   static final String DB_USER = "root";
   static final String DB_PASSWD = "";

   public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException,
         IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException {

      Connection connection = null;
      Statement statement = null;
      ResultSet resultSet = null;

      try{
          /*To connect with a database using JDBC you need to select get the
                 driver for the respective database and register the driver.
                 The forName() method of the class named Class accepts a class name
                as a String parameter and loads it into the memory, Soon the is
                loaded into the memory it gets registered automatically  */  
                //Take new instance
         System.setProperty("jdbc.drivers", "com.mysql.jdbc.Driver");
         Class.forName("com.mysql.jdbc.Driver").getDeclaredConstructor().newInstance();
         connection=DriverManager.getConnection(DB_URL,DB_USER,DB_PASSWD);
         statement=connection.createStatement();
         resultSet=statement.executeQuery ("SELECT * FROM dept");
         while(resultSet.next()){
            System.out.printf("%dt%st%sn",
            resultSet.getInt(1),
            resultSet.getString(2),
            resultSet.getString(3));
  

Ошибка возникает в строке connection=DriverManager.getConnection(DB_URL,DB_USER,DB_PASSWD);

Спасибо за любую помощь

Добавлена библиотека
Ошибка

Ответ №1:

1. Это применимо к версии MySQL ниже 8.0:

статическая конечная строка DB_URL = «jdbc:mysql:// localhost:3306/company»;

Измените его на

 static final String DB_URL ="jdbc:mysql://localhost:3306/company?useSSL=falseamp;allowPublicKeyRetrieval=trueamp;serverTimezone=UTC"
  

2. Передача com.mysql.jdbc.Driver в com.mysql.cj.jdbc.Driver ;

3. Class.forName("com.mysql.cj.jdbc.Driver") достаточно, также с этим кодом, System.setProperty("jdbc.drivers", "com.mysql.jdbc.Driver") не требуется, вы можете прокомментировать или удалить его;

Это работает для меня, и вы можете попробовать.

Ответ №2:

Согласно документации, имя класса должно быть com.mysql.cj.jdbc.Driver вместо com.mysql.jdbc.Driver . Также вызов getDeclaredConstructor() кажется ненужным. Возможно, это источник ваших проблем.

Комментарии:

1. Спасибо за вашу помощь, но, к сожалению, я попробовал оба ваших решения (заменив com.mysql.cj.jdbc.Driver и удалив getDeclaredConstructor()), но ни одно из них не работает: (Я все еще получаю точно такую же ошибку

2. @SoaAlex Я сталкиваюсь с той же ошибкой даже после добавления ref-lib, можете ли вы сказать, была ли решена ваша проблема? Если да, то как?

Ответ №3:

введите описание изображения здесьНажмите на Java-проекты на вкладке проводника слева в VSCode. Затем щелкните правой кнопкой мыши на имени вашего проекта и выберите Настроить путь к классу. это откроет конфигурацию пути к классам на новой вкладке. Прокрутите страницу вниз, а затем нажмите добавить в ссылочных библиотеках. Откроется всплывающее окно проводника. Выберите jar-файл java-mysql connector, и тогда он должен работать.

Ответ №4:

Шаг 1) Откройте java-проекты в левом нижнем углу VS Code

Шаг 2) Нажмите на кнопку в обновленных библиотеках

Шаг 3) Найдите драйвер, то есть файл соединителя в этом случае.

Шаг 4) Проблема решена и соединение создано