При запуске из JAR не найден подходящий драйвер

Я разработал небольшую игру, в которой текст, вводимый пользователем, должен быть размещен в базе данных MS Access.

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

java.sql.SQLException: No suitable driver found for jdbc:ucanaccess://C:\Users\Paul\Desktop\Spelli\RispostiDB.mdb

Это соответствующий код:

public void postAnsDB()
    {
       String tableName = "Form"+studentGroup +"_"+studentSurname+"_"+studentName+"";

       answerModifier();

       try{

                String strurl="jdbc:ucanaccess://C:\\Users\\Paul\\Desktop\\Spelli\\RispostiDB.mdb";
                Connection conn=DriverManager.getConnection(strurl, "", "");
                Statement stmt=conn.createStatement();

                //Post Student Details to DB 

                String post = "INSERT INTO "+tableName+"(ID, responses, Correct_Response, Valid_Invalid, Marks) VALUES ('"+ansID+"', '"+answer+"', '"+correct+"', '"+valid+"', '"+marks+"');";

                stmt.executeUpdate(post);
            }
        catch(Exception e)
        {
            System.out.println("Exception found in postAnsDB: "+e);
        }
    }

person Paul Formosa    schedule 01.10.2016    source источник
comment
Когда вы создаете свой проект в NetBeans, он создает папку dist в домашней папке вашего проекта, помещает файл JAR для вашего кода в эту папку, а также помещает зависимости (файлы JAR для необходимых компонентов, таких как UCanAccess, Jackcess, HSQLDB и биты Apache Commons) во вложенную папку с именем lib. Вам необходимо убедиться, что папка lib скопирована на целевую машину и помещена в ту же папку, что и ваш основной файл JAR. Подробнее см. здесь.   -  person Gord Thompson    schedule 01.10.2016
comment
СПАСИБО! В дополнение к вашим предложениям я также добавил все файлы Jar в NetBeans в разделе «Библиотеки». Моя программа теперь полностью функциональна, так что большое спасибо!!   -  person Paul Formosa    schedule 03.10.2016


Ответы (2)


Когда вы создаете свой проект в NetBeans, он создает папку dist в домашней папке вашего проекта, помещает файл JAR для вашего кода в эту папку, а также помещает зависимости (файлы JAR для необходимых компонентов, таких как UCanAccess, Jackcess, HSQLDB и биты Apache Commons) во вложенную папку с именем lib. Вам необходимо убедиться, что папка lib скопирована на целевую машину и помещена в ту же папку, что и ваш основной файл JAR. Подробнее см. здесь.

person Gord Thompson    schedule 03.10.2016

Вы можете пойти на подход с толстой банкой. Вы можете увидеть это здесь, если вы используете ant.

Если у вас есть проект maven, вы можете иметь этот плагин для создания толстой банки

Преимущество приложения с толстыми банками заключается в том, что вы можете иметь все внутри одной банки, и вам не нужно беспокоиться о каталоге lib, как это было упомянуто в другом ответе.

Также будьте осторожны с жестко закодированными путями, такими как:

String strurl="jdbc:ucanaccess://C:\\Users\\Paul\\Desktop\\Spelli\\RispostiDB.mdb";

который у вас есть в вашем коде.

person liponcio    schedule 03.10.2016