【发布时间】:2019-01-10 14:12:59
【问题描述】:
对我得到的 NullPointerException 有点困惑。我正在尝试将 .css 文件添加到我的 Main 类。这是代码。
//Load FXML file
Parent root = FXMLLoader.load(getClass().getResource("/application/HumansightFirstDraft.fxml"));
// Create scene
Scene scene = new Scene(root, 400, 600);
//Load CSS
scene.getStylesheets().add(getClass().getClassLoader().getResource("/application/application.css").toExternalForm());
// Display application
primaryStage.setScene(scene);
primaryStage.show();`
application.css 与 Main.java 位于同一位置。
这是我的控制台输出。
Jan 10, 2019 8:30:20 AM javafx.fxml.FXMLLoader$ValueElement processValue
WARNING: Loading FXML document with JavaFX API of version 10.0.1 by JavaFX runtime of version 8.0.191
java.lang.NullPointerException
at application.Main.start(Main.java:22)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$161(LauncherImpl.java:863)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$174(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
这是我的CSS。为了方便测试,我只做了一处改动。
#startSurvey {
-fx-border-radius: 30;
}
这是我在 Eclipse 中看到的目录。
【问题讨论】:
-
当
getResource(...)的结果为null时,表示在指定位置找不到资源。确保路径正确且资源文件位于类路径中。 -
我假设了很多,但我已经检查并重新检查了文件路径,它似乎是正确的。我将附上我的文件夹的屏幕截图。
-
如果你使用
getClass().getResource(...)而不是getClass().getClassLoader().getResource(...)会发生什么? -
css 文件包含在源文件夹中这一事实不会自动导致 IDE 将其复制到构建文件夹中。您是否检查了包含
.class文件的 css 文件的文件夹? -
所以当我取出getClassLoader()时,没有错误,但是css没有加载。自从我开始 JavaFX 以来,我遇到了一件奇怪的事情,我的程序只有在我包含 getClassLoader() 时才能工作。我在哪里可以找到这些文件夹?
标签: java css javafx nullpointerexception