Получение данных MySQL: "java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver"

160
27 марта 2022, 10:30

Имею код получения данных из MySQL.

try {
                String baseName = "***";
                String userName = "***";
                String password = "***";
                //Получение данных из mySQL
                Connection con = null;
                Statement stmt = null;
                ResultSet rs = null;
                String host = "torgspb.ru";
                String mysql_port = ":3306";
                String query = "SELECT * FROM `sf_catalog_catalog1_items`";

                try {
                    Class.forName("com.mysql.cj.jdbc.Driver").newInstance();
                } catch (ClassNotFoundException e) {
                    e.printStackTrace();
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                } catch (InstantiationError e) {
                    e.printStackTrace();
                } catch (InstantiationException e) {
                    e.printStackTrace();
                }

                try {
                    con = DriverManager.getConnection("jdbc:mysql://" + host + mysql_port + "/" + baseName, userName, password);
                    if (con != null)
                        System.out.println("Соединились");
                    stmt = con.createStatement();
                    rs = stmt.executeQuery(query);
                    System.out.println("Выполнили запрос");

                    }

                } catch (SQLException sqlEx) {
                    sqlEx.printStackTrace();
                } finally {
                    try {
                        con.close();
                    } catch (SQLException se) {
                        se.printStackTrace();
                    }
                    try {
                        stmt.close();
                    } catch (SQLException se) {
                        se.printStackTrace();
                    }
                    try {
                        rs.close();
                    } catch (SQLException se) {
                        se.printStackTrace();
                    }
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }

При запуске из Android Studio выбрасывает с ошибкой:

02/03 15:56:42: Launching 'app' on Galaxy Nexus API 23.
$ adb shell am start -n "com.example.rosfixator/com.example.rosfixator.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Connected to process 4646 on device 'emulator-5554'.
Capturing and displaying logcat messages from application. This behavior can be disabled in the "Logcat output" section of the "Debugger" settings page.
W/System: ClassLoader referenced unknown path: /data/app/com.example.rosfixator-2/lib/x86
W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter androidx.vectordrawable.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
I/art: Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$2>
I/art: Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$2>
I/System.out: Пустая строка
D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true
D/: HostConnection::get() New Host Connection established 0xab25edc0, tid 4646
D/: HostConnection::get() New Host Connection established 0xaec17ac0, tid 4667
I/OpenGLRenderer: Initialized EGL, version 1.4
W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
D/EGL_emulation: eglCreateContext: 0xaed94600: maj 3 min 1 rcv 4
D/EGL_emulation: eglMakeCurrent: 0xaed94600: ver 3 1 (tinfo 0xaed928a0)
E/eglCodecCommon: glUtilsParamSize: unknow param 0x000082da
    glUtilsParamSize: unknow param 0x00008cdf
E/eglCodecCommon: glUtilsParamSize: unknow param 0x00008824
D/EGL_emulation: eglMakeCurrent: 0xaed94600: ver 3 1 (tinfo 0xaed928a0)
D/EGL_emulation: eglMakeCurrent: 0xaed94600: ver 3 1 (tinfo 0xaed928a0)
E/Surface: getSlotFromBufferLocked: unknown buffer: 0xa2249500
I/System.out: torgspb_rosfixator torgspb_rosfixat RbdBBqMl
W/System.err: java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
        at java.lang.Class.classForName(Native Method)
        at java.lang.Class.forName(Class.java:324)
        at java.lang.Class.forName(Class.java:285)
        at com.example.rosfixator.CategoryActivity$2.onFinished(CategoryActivity.java:114)
        at com.example.rosfixator.RemoteDataRequest.onPostExecute(RemoteDataRequest.java:66)
        at com.example.rosfixator.RemoteDataRequest.onPostExecute(RemoteDataRequest.java:26)
        at android.os.AsyncTask.finish(AsyncTask.java:651)
        at android.os.AsyncTask.-wrap1(AsyncTask.java)
        at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5417)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
    Caused by: java.lang.ClassNotFoundException: Didn't find class "com.mysql.cj.jdbc.Driver" on path: DexPathList[[zip file "/data/app/com.example.rosfixator-2/base.apk"],nativeLibraryDirectories=[/data/app/com.example.rosfixator-2/lib/x86, /vendor/lib, /system/lib]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
        ... 15 more
        Suppressed: java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
        at java.lang.Class.classForName(Native Method)
        at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
        at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
            ... 16 more
        Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
W/System.err: java.sql.SQLException: No suitable driver
        at java.sql.DriverManager.getConnection(DriverManager.java:186)
        at java.sql.DriverManager.getConnection(DriverManager.java:213)
        at com.example.rosfixator.CategoryActivity$2.onFinished(CategoryActivity.java:129)
        at com.example.rosfixator.RemoteDataRequest.onPostExecute(RemoteDataRequest.java:66)
        at com.example.rosfixator.RemoteDataRequest.onPostExecute(RemoteDataRequest.java:26)
        at android.os.AsyncTask.finish(AsyncTask.java:651)
        at android.os.AsyncTask.-wrap1(AsyncTask.java)
        at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5417)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.rosfixator, PID: 4646
    java.lang.NullPointerException: Attempt to invoke interface method 'void java.sql.Connection.close()' on a null object reference
        at com.example.rosfixator.CategoryActivity$2.onFinished(CategoryActivity.java:160)
        at com.example.rosfixator.RemoteDataRequest.onPostExecute(RemoteDataRequest.java:66)
        at com.example.rosfixator.RemoteDataRequest.onPostExecute(RemoteDataRequest.java:26)
        at android.os.AsyncTask.finish(AsyncTask.java:651)
        at android.os.AsyncTask.-wrap1(AsyncTask.java)
        at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5417)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
I/Process: Sending signal. PID: 4646 SIG: 9
Process 4646 terminated.

Использую библиотеку mysql-connector-java-5.1.23-bin.jar

Причем с этой же библиотекой указанный код неплохо отрабатывает в IDEA. У меня 2 компьютера и на обоих компах ситуация повторяется 1:1

Все фаерволы и антивирусы отключены.

Вероятно есть какая-то проблема (/особенность) в Studio. Кто-нибудь сталкивался? Спасибо.

Answer 1

Попробуете это.

public static boolean idPhone24Hour(String Phone, String SMS) {
    try (Connection c = getConnection1()) {
        String sql1 = "select  from  where  =  ";
        PreparedStatement ps1 = c.prepareStatement(sql1);
        ps1.setString(1, Phone);
        ResultSet rs1 = ps1.executeQuery();
        while (rs1.next()) {
        }
        rs1.next();
    } catch (Exception ex) {
        throw new RuntimeException(ex);
    }

    return false;
}
private static Connection getConnection1() throws SQLException {

    return DriverManager.getConnection("jdbc:mysql://localhost:3306/usb_key", "root", "530433");

}
READ ALSO
Вложенный цикл for

Вложенный цикл for

Всем приветЕсть задача Считать слово с клавиатуры и из символов вывести строки

90
Работа с контейнером AnchorPane в JavaFX/Scene Builder

Работа с контейнером AnchorPane в JavaFX/Scene Builder

Здравствуйте товарищиДавайте сразу перейду к сути вопроса, у меня стоит цель создать контейнер AnchorPane(Работаю я в SceneBuilder) в который я так же хотел...

145
Использование XSLT в XML

Использование XSLT в XML

Здравствуйте пишу web приложение c REST API и представлением в виде XSLT преобразования полученной xml от REST apiГенерирую xml в коде на сервере, хочу...

80
Проверка формы на заполнение java

Проверка формы на заполнение java

Есть сервлет регистрации, в который передаются данные с полей формыНеобходимо реализовать проверку полей на заполненность (Поля не должны...

99