Получить файл из папки ресурсов на Java (JavaFX)
Я изучаю программирование JavaFX по слитому курсу. У меня вот такая стандартная структура проекта в Intellij IDEA:
И вот такой Main class:
package aoizora.book;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Main extends Application
{
public static void main(String[] args)
{
launch(args);
}
@Override
public void start(Stage stage) throws Exception
{
var fxml = getClass().getResource("book.fxml");
Parent root = FXMLLoader.load(getClass().getResource("../../../resources/book.fxml"));
stage.setTitle("Address Book");
stage.setMinHeight(600);
stage.setMinWidth(400);
stage.setScene(new Scene(root, 300, 275));
stage.show();
}
}
Проблема в том, что я не могу получить доступ к файлу book.fxml
из папки ресурсов. Метод getResource возвращает null. Что мне сделать, чтобы получить этот файл без ошибки?
Если важно, опции VM у меня такие:
--module-path C:\JavaFX\lib --add-modules=javafx.controls,javafx.fxml
Ответы (1 шт):
Вы неправильно указали путь.
Ваша ошибка в том, что вы указали resources
, но этого делать нельзя, так как при создании jar
он удаляется, также это ../../
будет лишним.
Например, если структура проекта такая:
src_
|
|
_ main ___
| |
| |
java resources
| |
aoizora |
| |
book book.fxml
То в jar
-е будет так:
jar root
|
___|______________
| | |
book.fxml aoizora META-INF
| |
book MANIFEST.MF
|
.class files
поэтому сначала желательно создать в resources
отдельную папку, допустим, путь будет таким:
resources/assets/fxml/book.fxml
Потом файл надо так открывать:
Parent root = FXMLLoader.load(getClass().getResource("/assets/fxml/book.fxml"));