Почему я получаю java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver, когда mysql-connector-java-8.0.16.jar находится в пути к классам? - PullRequest
0 голосов
/ 24 июня 2019

Я получаю java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver, когда я набираю это в командной строке Windows

javac src/*.java -d class -cp lib/*
java DBTest -cp lib/*

Я также пытался использовать com.mysql.cj.jdbc без драйвера в конце. Я добавляю newInstance () в строку 11, чтобы это было:

Class.forName("com.mysql.cj.jdbc.Driver").newInstance();

но без изменений.

Я также пробовал без Class.forName (), так как это устарело, но я получил исключение java.sql.SQLException: Подходящий драйвер не найден

mysql-connector-java-8.0.16.jar - единственный файл в lib. Я также попытался положить его в папку, где я запускаю DBTest.java. Я установил Classpath из командной строки, используя

set CLASSPATH = .

и путем создания переменной среды CLASSPATH с помощью расширенных настроек системы. Затем я попытался скомпилировать и запустить с и без -cp, так как он должен проверять текущий каталог для файла jar.

Я также попытался запустить это в затмении, но затмение упало и больше не открывается.

import java.sql.*;

public class DBTest{
    public static void main(String args[]) {
        try {

            Class.forName("com.mysql.cj.jdbc.Driver");

            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/employees", "root", "root");

            Statement stmt = con.createStatement();

            ResultSet rs = stmt.executeQuery("select * from employees Limit 10");
            while(rs.next()) {
                System.out.println(rs.getInt(1) + " " + rs.getString(2) + " " + rs.getDouble(3));
            }
            con.close();
        }catch(Exception e) {
            System.out.println(e);
        }
    }
}

Полное сообщение об ошибке java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver

1 Ответ

1 голос
/ 24 июня 2019

У вас есть аргументы для java в неправильном порядке.Помещая аргументы после , имя класса передает эти аргументы методу main вашего класса, он не устанавливает путь к классу.

Вам необходимо поставить аргументы перед именем класса.Также -d class не является допустимым аргументом для java.Короче, нужно использовать:

java -cp class:lib/* DBTest
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...