#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? Вы не дали много информации. Я могу только предполагать, что дано.