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. Если это решение найдено в другом месте, пожалуйста, удалите этот пост.