我有一个应用程序,它是Swing (旧式)和JavaFX组件的混合体。它工作得很好,直到我尝试将一个预加载器插入到混合程序中,现在我所有利用fxml文件和FXMLLoader.load(),的JavaFX组件都无法工作,因为只要调用新FXMLLoader() (带参数还是不带参数)或调用,就会抛出NPE。
我正在使用64位Java 7u67。
堆栈跟踪显示:
javafx.fxml.JavaFXBuilderFactory.(JavaFXBuilderFactory.java:85) at javafx.fxml.JavaFXBuilderFactory.(JavaFXBuilderFactory.java:53) at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2782) at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2771)的java.lang.NullPointerException
在插入PreLoader之前,初始化类完成它的工作,然后调用实际应用程序的main()方法。在预加载器中,它基本上是相同的,在预加载器的start()方法下调用应用程序的main()方法。
我不知道是什么原因造成的。有什么想法吗?
发布于 2014-10-18 04:16:03
我必须检查源代码,但我在网上找到的代码与报告的#不匹配。
无论如何,按照我所看到的,在我描述的转换中,默认的类加载程序似乎变为空。为了解决这个问题,我所做的就是将类加载器设置为一个工作实例。
try {
fxmlLoader = new FXMLLoader(getClass().getResource("Sample.fxml"));
} catch(Exception e) {
FXMLLoader.setDefaultClassLoader(SampleController.class.getClassLoader());
fxmlLoader = new FXMLLoader(getClass().getResource("Sample.fxml"));
}当然,我们可以直接设置默认的类加载器。
https://stackoverflow.com/questions/26434758
复制相似问题