java.lang.NullPointerException: местоположение требуется все еще не работает

Я также столкнулся с некоторыми проблемами, пытаясь заставить мою программу JavaFX работать. Как и некоторые другие, я продолжаю получать ошибку java.lang.NullPointerException: Location is required. Файл fxml находится в пакете приложения. Я перепробовал все средства, которые нашел здесь, но, может быть, я что-то упустил? Вот мой код

package application;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.stage.Stage;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;

public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        try {
            Parent root = FXMLLoader.load(getClass().getResource("application/Main.fxml"));
            Scene scene = new Scene(root, 400, 400);
            scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
            primaryStage.setScene(scene);
            primaryStage.show();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        launch(args);
    }
}

А вот и ошибка

java.lang.NullPointerException: Location is required.
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3207)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3175)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3148)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3124)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3104)
    at javafx.fxml.FXMLLoader.load(FXMLLoader.java:3097)
    at application.Main.start(Main.java:18)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863)
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326)
    at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)

Любая помощь приветствуется. заранее спасибо

2 ответа

Я потерял целый день, сражаясь с этой проблемой в Netbeans. Вот как я решил это: во-первых, я поместил файл fxml в один пакет с основным (хотя он может работать даже в отдельных пакетах). Во-вторых, я использовал getClassLoader(), указав путь к файлу. Вот код:` public class Main {

public static void main(String[] args) {
    System.out.println("Test  = "+Main.class.getClassLoader().getResource("FXMLDocument.fxml"));`

После запуска проекта вы увидите следующее: ....NETBeansProjects/JavaFXApplicationTest/dist/JavaFXApplicationTest.jar!/FXMLDocument.fxml Обратите внимание, что при запуске только одного файла ранее возникала ошибка.

Это будет работать:

"/application/Main.fxml"

вам просто нужно добавить /

Решил проблему, перетащив Main.fxml в папку src. Если это решение найдено в другом месте, пожалуйста, удалите этот пост.

Другие вопросы по тегам