Стандарт пакета Java FX

#java #javafx-8

#java #javafx-8

Вопрос:

Я хочу знать, существуют ли какие-либо стандарты пакетов для приложений Java FX, потому что, когда я развертываю свое приложение, выдает мне несколько ошибок, таких как местоположение fxml не найдено, не найдена база данных и т. Д. Я использую jdk 8

Ответ №1:

Вероятно, вы неправильно настроили пути к файлам fxml и / или файлу базы данных.

Если ваш класс java и связанные с ним файлы fxml находятся в одной папке, вы можете просто вызвать их следующим образом:

Controller.java

 new FXMLLoader(getClass().getResource("ControllerLayout.fxml"));
 

ControllerLayout.fxml

 <BorderPane xmlns="http://javafx.com/javafx/" xmlns:fx="http://javafx.com/fxml/1" fx:controller="Controller">
 

Допустим, у вас есть свои макеты в папке layouts, а контроллеры — в родительской папке names main. Тогда это должно выглядеть так:

Controller.java

 new FXMLLoader(getClass().getResource("layouts/ControllerLayout.fxml"));
 

ControllerLayout.fxml

 <BorderPane xmlns="http://javafx.com/javafx/" xmlns:fx="http://javafx.com/fxml/1" fx:controller="main.Controller">
 

То же самое относится и к вашему файлу базы данных. Но поскольку вы не смогли поместить свой файл БД в свой исполняемый jar, вы должны получить путь к БД динамически.

Запустите этот код в своем основном классе, чтобы получить абсолютный путь во время выполнения.

 public class Main extends Application 
{
   public static String PATH;

    @Override
    public void start(Stage primaryStage)
    {
        Path p = Paths.get(Main.class.getProtectionDomain().getCodeSource().getLocation().toURI());
        Path folder = p.getParent();
        PATH = folder.toString();     
    }
}
 

Предположим, вы поместили файл базы данных в папку с именем «db». Вызовите эту строку, чтобы получить абсолютный путь к вашей базе данных

 String dbpath = "jdbc:sqlite:"   Main.PATH   "/db/mydatabase.db";
 

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

1. Когда я запускаю программу в IDE, она работает хорошо, но когда я создаю jar, она выдает мне местоположение исключения нулевого указателя, которое требуется для файлов fxml

2. Это мне очень помогло. Но не работал с базой данных. Cmd сообщает, что ‘rsrc’ не установлен

3. Не могли бы вы, пожалуйста, помочь мне с этим?

4. Теперь jar запускается, но теперь он выдает исключение нулевого указателя для методов программы. Я не знаю, что делать

5. Какую библиотеку вы используете для базы данных? Я предлагаю вам проверить библиотеку «sqlite jdbc». Где находится ваш файл базы данных после извлечения файла jar? Вы не дали много информации. Я могу только предполагать, что дано.