Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8089276

Applet FX Thread not respecting order of runnables when loading FXML

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Won't Fix
    • Icon: P4 P4
    • None
    • 7u45, 8, 9
    • javafx
    • java 1.7.0_45-b18 32 bits, IE, FF, Windows (7 & 8 at least)

      Scenario :
      - execute two tasks successively with Platform.runLater()
      - first one loads a FXML and affects the FXML controller to an attribute
      - second one accesses to this attribute

      Platform.runLater() doc says "The Runnables are executed in the order they are posted. " so I'm expecting to have no problem accessing the attribute in the second runnable.
      http://docs.oracle.com/javafx/2/api/javafx/application/Platform.html#runLater%28java.lang.Runnable%29

      When deploying as an applet I get a NPE. It didn't happen with all previous versions.

      I'm posting the sample test right after this.

      Certainly related to https://javafx-jira.kenai.com/browse/RT-33657
      Here is the NPE stack trace :

      java.lang.NullPointerException
          at application.TestObject$2.run(TestObject.java:31)
          at com.sun.javafx.application.PlatformImpl$4$1.run(Unknown Source)
          at com.sun.javafx.application.PlatformImpl$4$1.run(Unknown Source)
          at java.security.AccessController.doPrivileged(Native Method)
          at com.sun.javafx.application.PlatformImpl$4.run(Unknown Source)
          at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
          at com.sun.glass.ui.win.WinApplication._enterNestedEventLoopImpl(Native Method)
          at com.sun.glass.ui.win.WinApplication._enterNestedEventLoop(Unknown Source)
          at com.sun.glass.ui.Application.enterNestedEventLoop(Unknown Source)
          at com.sun.glass.ui.EventLoop.enter(Unknown Source)
          at com.sun.javafx.tk.quantum.QuantumToolkit.enterNestedEventLoop(Unknown Source)
          at com.sun.deploy.uitoolkit.impl.fx.FXPluginToolkit$FxWaiter.wait(Unknown Source)
          at com.sun.deploy.util.Waiter.runAndWait(Unknown Source)
          at sun.plugin2.message.Pipe.receive(Unknown Source)
          at sun.plugin2.main.client.MessagePassingExecutionContext.getProxyList(Unknown Source)
          at sun.plugin2.main.client.PluginProxySelector.select(Unknown Source)
          at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
          at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
          at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
          at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
          at com.sun.deploy.security.DeployURLClassPath$UrlLoader.getResource(Unknown Source)
          at com.sun.deploy.security.DeployURLClassPath.getResource(Unknown Source)
          at sun.plugin2.applet.Plugin2ClassLoader.getResourceAsResource(Unknown Source)
          at sun.plugin2.applet.Plugin2ClassLoader.getResourceAsStream(Unknown Source)
          at javax.xml.stream.SecuritySupport$4.run(Unknown Source)
          at java.security.AccessController.doPrivileged(Native Method)
          at javax.xml.stream.SecuritySupport.getResourceAsStream(Unknown Source)
          at javax.xml.stream.FactoryFinder.findJarServiceProvider(Unknown Source)
          at javax.xml.stream.FactoryFinder.find(Unknown Source)
          at javax.xml.stream.FactoryFinder.find(Unknown Source)
          at javax.xml.stream.XMLInputFactory.newInstance(Unknown Source)
          at javafx.fxml.FXMLLoader.load(Unknown Source)
          at application.TestObject.loadFXML(TestObject.java:49)
          at application.TestObject.access$000(TestObject.java:10)
          at application.TestObject$1.run(TestObject.java:19)
          at com.sun.javafx.application.PlatformImpl$4$1.run(Unknown Source)
          at com.sun.javafx.application.PlatformImpl$4$1.run(Unknown Source)
          at java.security.AccessController.doPrivileged(Native Method)
          at com.sun.javafx.application.PlatformImpl$4.run(Unknown Source)
          at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
          at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
          at com.sun.glass.ui.win.WinApplication.access$100(Unknown Source)
          at com.sun.glass.ui.win.WinApplication$3$1.run(Unknown Source)
          at java.lang.Thread.run(Unknown Source)

            kcr Kevin Rushforth
            pmarsonjfx Pitt Marson (Inactive)
            Votes:
            1 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported: