首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FXMLLoader中的NPE

FXMLLoader中的NPE
EN

Stack Overflow用户
提问于 2014-10-17 23:28:47
回答 1查看 207关注 0票数 2

我有一个应用程序,它是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()方法。

我不知道是什么原因造成的。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-18 04:16:03

我必须检查源代码,但我在网上找到的代码与报告的#不匹配。

无论如何,按照我所看到的,在我描述的转换中,默认的类加载程序似乎变为空。为了解决这个问题,我所做的就是将类加载器设置为一个工作实例。

代码语言:javascript
复制
        try {
           fxmlLoader = new FXMLLoader(getClass().getResource("Sample.fxml"));
        } catch(Exception e) {
           FXMLLoader.setDefaultClassLoader(SampleController.class.getClassLoader());
           fxmlLoader = new FXMLLoader(getClass().getResource("Sample.fxml"));
        }

当然,我们可以直接设置默认的类加载器。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26434758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档