javafx.fxml.FXMLLoader.getClassLoader()" is null错误解决方法
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容器。