-
Bug
-
Resolution: Fixed
-
P4
-
8
In SB 2.0, we have a background thread which performs some FXMLLoader.load() calls.
Sometimes we get the exception below.
We have no clear way to reproduce this exception.
Looking at BeanAdapter sources, I wonder if the update of globalMethodCache is fully thread safe.
java.lang.NullPointerException
file:/Users/yjoan/Library/Application%20Support/Scene%20Builder/Library/ThermostatView.jar!/thermostatview/ThermostatView.fxml:15
at com.sun.javafx.fxml.BeanAdapter.getMethod(BeanAdapter.java:139)
at com.sun.javafx.fxml.BeanAdapter.getGetterMethod(BeanAdapter.java:161)
at com.sun.javafx.fxml.BeanAdapter.get(BeanAdapter.java:204)
at com.sun.javafx.fxml.BeanAdapter.get(BeanAdapter.java:200)
at javafx.fxml.FXMLLoader$ValueElement.processValue(FXMLLoader.java:831)
at javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:731)
at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2572)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2384)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2283)
at thermostatview.ThermostatView.load(ThermostatView.java:39)
at thermostatview.ThermostatView.<init>(ThermostatView.java:25)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:414)
at java.lang.Class.newInstance(Class.java:432)
at sun.reflect.misc.ReflectUtil.newInstance(ReflectUtil.java:47)
at javafx.fxml.FXMLLoader$InstanceDeclarationElement.constructValue(FXMLLoader.java:995)
at javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:726)
at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2572)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2384)
at com.oracle.javafx.scenebuilder.kit.library.util.JarExplorer.instantiateWithFXMLLoader(JarExplorer.java:83)
at com.oracle.javafx.scenebuilder.kit.library.util.JarExplorer.exploreEntry(JarExplorer.java:121)
at com.oracle.javafx.scenebuilder.kit.library.util.JarExplorer.explore(JarExplorer.java:43)
at com.oracle.javafx.scenebuilder.kit.library.user.LibraryFolderWatcher.exploreAndUpdateLibrary(LibraryFolderWatcher.java:209)
at com.oracle.javafx.scenebuilder.kit.library.user.LibraryFolderWatcher.runDiscovery(LibraryFolderWatcher.java:83)
at com.oracle.javafx.scenebuilder.kit.library.user.LibraryFolderWatcher.run(LibraryFolderWatcher.java:52)
at java.lang.Thread.run(Thread.java:724)
Sometimes we get the exception below.
We have no clear way to reproduce this exception.
Looking at BeanAdapter sources, I wonder if the update of globalMethodCache is fully thread safe.
java.lang.NullPointerException
file:/Users/yjoan/Library/Application%20Support/Scene%20Builder/Library/ThermostatView.jar!/thermostatview/ThermostatView.fxml:15
at com.sun.javafx.fxml.BeanAdapter.getMethod(BeanAdapter.java:139)
at com.sun.javafx.fxml.BeanAdapter.getGetterMethod(BeanAdapter.java:161)
at com.sun.javafx.fxml.BeanAdapter.get(BeanAdapter.java:204)
at com.sun.javafx.fxml.BeanAdapter.get(BeanAdapter.java:200)
at javafx.fxml.FXMLLoader$ValueElement.processValue(FXMLLoader.java:831)
at javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:731)
at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2572)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2384)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2283)
at thermostatview.ThermostatView.load(ThermostatView.java:39)
at thermostatview.ThermostatView.<init>(ThermostatView.java:25)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:414)
at java.lang.Class.newInstance(Class.java:432)
at sun.reflect.misc.ReflectUtil.newInstance(ReflectUtil.java:47)
at javafx.fxml.FXMLLoader$InstanceDeclarationElement.constructValue(FXMLLoader.java:995)
at javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:726)
at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2572)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2384)
at com.oracle.javafx.scenebuilder.kit.library.util.JarExplorer.instantiateWithFXMLLoader(JarExplorer.java:83)
at com.oracle.javafx.scenebuilder.kit.library.util.JarExplorer.exploreEntry(JarExplorer.java:121)
at com.oracle.javafx.scenebuilder.kit.library.util.JarExplorer.explore(JarExplorer.java:43)
at com.oracle.javafx.scenebuilder.kit.library.user.LibraryFolderWatcher.exploreAndUpdateLibrary(LibraryFolderWatcher.java:209)
at com.oracle.javafx.scenebuilder.kit.library.user.LibraryFolderWatcher.runDiscovery(LibraryFolderWatcher.java:83)
at com.oracle.javafx.scenebuilder.kit.library.user.LibraryFolderWatcher.run(LibraryFolderWatcher.java:52)
at java.lang.Thread.run(Thread.java:724)