【发布时间】:2013-09-27 11:11:47
【问题描述】:
我正在使用 JavaFX 并尝试将 CSS 文件加载到我的场景中。
scene.getStyleSheets().add(Main.class.getResource("res/application.css").toExternalForm();
抛出一个 NPE。我认为这是因为 css 文件不在类路径中,但我不确定如何以这种方式加载它。我不想将 css 文件包含在我的包目录 (com.somecompany.package) 中,我宁愿将它包含在可以自行部署的单独目录中(以便用户可以根据需要进行修改)。
如何从类路径外部加载 css 文件(或相关资源)?
我的堆栈跟踪:
java.lang.NullPointerException
at com.somecompany.someapp.Main.start(Main.java:30)
at com.sun.javafx.application.LauncherImpl$5.run(LauncherImpl.java:319)
at com.sun.javafx.application.PlatformImpl$5.run(PlatformImpl.java:206)
at com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:173)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:29)
at com.sun.glass.ui.win.WinApplication$3$1.run(WinApplication.java:73)
at java.lang.Thread.run(Unknown Source)
【问题讨论】:
-
如果找不到文件那么应该抛出 FileNotFoundException... 你能粘贴 NPE 的堆栈跟踪吗?
-
@GV
Class#getResource()如果找不到资源,则返回null。 -
添加了堆栈跟踪。 Main.class 的第 30 行是上面的行。 @SotiriosDelimanolis 是对的,它是一个 npe,因为它找不到它。我不确定如何让它找到它