Мой Java Exe не может подключиться к базе данных SQL, но если я использую мою IDE, это работает - PullRequest
0 голосов
/ 14 декабря 2018

Я выполнил проект с использованием NetBeans 8, где мне нужно подключиться к базе данных mysql и отобразить содержимое в таблице.Пока я использую IDE, соединение работает просто отлично!Но когда я выполняю очистку и сборку для создания исполняемого файла jar, моя программа не может подключиться к базе данных ... Может ли кто-нибудь помочь мне с этим?Спасибо!

Вот код, который я использую:

@FXML
    private void loadDB() {
        //cleaning all fields from table View and removing previous elements from studentList before show new content;
        tableView.getItems().clear();
        studentList.removeAll();

        String stg = dataBaseField.getText();
        //Expected string format:
        //jdbc:mysql://mymysql.senecacollege.ca/eden_burton?user=jac444_183a01&password=eqXE@4464

        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            System.out.println("Error loading the driver" + e);
        }
        try {
            //connecting to the database
            Connection conexao = DriverManager.getConnection(dataBaseField.getText());

            //creating a statement and query to be executed
            Statement myStmt = conexao.createStatement();
            ResultSet result = myStmt.executeQuery("select * from Students");

            //look at the result set
            while (result.next()) {
                Student student_ = new Student(result.getInt("id"), result.getString("name"), result.getString("course"), result.getInt("grade"));
                studentList.addNaLista(student_);
                tableView.setItems(getStudent(studentList.getList()));
            }

            myStmt.close();//closing statement
            result.close();//closing results
            conexao.close();//closing connection

        } //if a connection could not be set.
        catch (SQLException exc) {
            alert("CONNECTION ERROR!", "Please verify your connection string.", "String should be in the following format: " + "\n\njdbc:mysql://mymysql.senecacollege.ca/DATABASENAME?user=USERNAME&password=PASSWORD");
        }
    }

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Предполагая, что вы используете проект на основе Ant в Netbeans, вы можете настроить свой проект так, чтобы NetBeans создавал исполняемый файл jar и копировал все зависимые библиотеки в папку dist вашего проекта.

Для этого установите флажок «Копировать зависимые библиотеки» в разделе «Упаковка» (в разделе «Сборка») свойств проекта.

enter image description here

( Снимок экрана был сделан с NetBeans 10, но более старые версии имеют точно такие же параметры )

Убедитесь, что у вас есть основной класс, определенный в разделе Run проекта.

Как только вы это сделаете и создадите свой проект, папка dist будет содержать MyApp.jar и подкаталог lib, который будет содержать все библиотеки, добавленные в ваш проект.MyApp.jar будет содержать MANIFEST.MF, который включает в себя jar вашего приложения и все зависимые библиотеки (расположенные в каталоге lib), чтобы вы могли запустить свое приложение, используя java -jar MyApp.jar

0 голосов
/ 14 декабря 2018

Зависит от обсуждения в комментариях к вопросу:

Проблема в том, что при запуске исполняемого файла jar отсутствует JSQL-диск MySQL в пути к классам JVM.Это работает из затмения, потому что IDE заботится о правильном создании пути к классу при добавлении зависимостей в проект и запуске одного из его файлов классов.

Если вы создаете банку из проекта, затмение не добавит к нему зависимость.Вы должны справиться с этим самостоятельно.Теперь у вас есть две опции:

  1. Позвольте eclipse связать jar в ваш исполняемый jar, как описано here
  2. Создавайте classpath самостоятельно при запуске jar,Вам нужно добавить аргумент -cp к вызову процесса и перечислить необходимые файлы jar для запуска приложения.(См. Пример здесь )

РЕДАКТИРОВАТЬ:

Поскольку вы используете NetBeans, кажется, что NetBeans не имеет опции, как у Eclipse.Итак, вы застряли с моим Вариант 2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...