javafx.fxml.FXMLLoader.getClassLoader()" is null错误解决方法

发布时间 2023-03-26 21:49:36作者: 捞鱼哥

javafx程序中,在Application的继承类中,启动了spring容器

    @Override
    public void init() throws Exception {
        springApplicationContext = new SpringApplicationBuilder(HelloApplication.class).run();//此语句启动spring容器,会造成响应响应中的线程为AppKit Thread,且FXMLLoader.getDefaultClassLoader为null,导致加载fxml失败
    }

导致javafx事件响应的线程名字变为AppKit Thread,(正常情况下线程名字为JavaFX Application Thread)且报错:

Caused by: java.lang.NullPointerException: Cannot invoke "java.lang.ClassLoader.loadClass(String)" because the return value of "javafx.fxml.FXMLLoader.getClassLoader()" is null
	at javafx.fxml/javafx.fxml.FXMLLoader.loadTypeForPackage(FXMLLoader.java:3017)
	at javafx.fxml/javafx.fxml.FXMLLoader.getType(FXMLLoader.java:2971)
	at javafx.fxml/javafx.fxml.FXMLLoader.createElement(FXMLLoader.java:2859)
	at javafx.fxml/javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2805)
	at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2634)

博主的电脑为imac,不知道windows会不会出现这样的情况。
解决方法是,不在init函数中启动spring容器。