JDK-8022894 : JavaFX / Swing app not starting from WebStart when Swing initialized first
  • Type: Bug
  • Component: client-libs
  • Sub-Component: java.awt
  • Affected Version: 7u25
  • Priority: P3
  • Status: Closed
  • Resolution: Duplicate
  • OS: windows_7
  • Submitted: 2013-08-13
  • Updated: 2013-08-14
  • Resolved: 2013-08-14
Related Reports
Duplicate :  
Description
FULL PRODUCT VERSION :
java version  " 1.7.0_25 " 
Java(TM) SE Runtime Environment (build 1.7.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)

java version  " 1.7.0_40-ea " 
Java(TM) SE Runtime Environment (build 1.7.0_40-ea-b38)
Java HotSpot(TM) 64-Bit Server VM (build 24.0-b55, mixed mode)



ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows [Version 6.1.7601]

A DESCRIPTION OF THE PROBLEM :
When JavaFX app contain Swing jDialog and  jDialog is created first,  then application is not starting from Web Start.

The same app will start as jar.


ERROR MESSAGES/STACK TRACES THAT OCCUR :

java.lang.NullPointerException
at sun.awt.windows.WWindowPeer.initActiveWindowsTracking(Unknown Source)
at sun.awt.windows.WWindowPeer.initialize(Unknown Source)
at sun.awt.windows.WFramePeer.initialize(Unknown Source)
at sun.awt.windows.WComponentPeer.<init>(Unknown Source)
at sun.awt.windows.WCanvasPeer.<init>(Unknown Source)
at sun.awt.windows.WPanelPeer.<init>(Unknown Source)
at sun.awt.windows.WWindowPeer.<init>(Unknown Source)
at sun.awt.windows.WFramePeer.<init>(Unknown Source)
at sun.awt.windows.WToolkit.createFrame(Unknown Source)
at java.awt.Frame.addNotify(Unknown Source)
at javax.swing.SwingUtilities$SharedOwnerFrame.addNotify(Unknown Source)
at java.awt.Dialog.addNotify(Unknown Source)
at java.awt.Dialog.conditionalShow(Unknown Source)
at java.awt.Dialog.show(Unknown Source)
at java.awt.Component.show(Unknown Source)
at java.awt.Component.setVisible(Unknown Source)
at java.awt.Window.setVisible(Unknown Source)
at java.awt.Dialog.setVisible(Unknown Source)
at error.Error.start(Error.java:23)
at com.sun.javafx.applet.FXApplet2$1.run(Unknown Source)
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)
Exception in runnable
java.lang.RuntimeException: java.lang.NullPointerException
at com.sun.javafx.applet.FXApplet2$1.run(Unknown Source)
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)
Caused by: java.lang.NullPointerException
at sun.awt.windows.WWindowPeer.initActiveWindowsTracking(Unknown Source)
at sun.awt.windows.WWindowPeer.initialize(Unknown Source)
at sun.awt.windows.WFramePeer.initialize(Unknown Source)
at sun.awt.windows.WComponentPeer.<init>(Unknown Source)
at sun.awt.windows.WCanvasPeer.<init>(Unknown Source)
at sun.awt.windows.WPanelPeer.<init>(Unknown Source)
at sun.awt.windows.WWindowPeer.<init>(Unknown Source)
at sun.awt.windows.WFramePeer.<init>(Unknown Source)
at sun.awt.windows.WToolkit.createFrame(Unknown Source)
at java.awt.Frame.addNotify(Unknown Source)
at javax.swing.SwingUtilities$SharedOwnerFrame.addNotify(Unknown Source)
at java.awt.Dialog.addNotify(Unknown Source)
at java.awt.Dialog.conditionalShow(Unknown Source)
at java.awt.Dialog.show(Unknown Source)
at java.awt.Component.show(Unknown Source)
at java.awt.Component.setVisible(Unknown Source)
at java.awt.Window.setVisible(Unknown Source)
at java.awt.Dialog.setVisible(Unknown Source)
at error.Error.start(Error.java:23)
... 10 more


REPRODUCIBILITY :
This bug can be reproduced always.

---------- BEGIN SOURCE ----------
public class Error extends Application {

    public JDialog jDialog = new JDialog();

    @Override
    public void start(Stage primaryStage) {
        StackPane root = new StackPane();

        Scene scene = new Scene(root, 800, 650);
        //jDialog = new JDialog();
        jDialog.setVisible(true);
        jDialog.setSize(800, 650);
        
        primaryStage.setTitle( " Hello World! " );
        primaryStage.setScene(scene);
        primaryStage.show();
    
    }

    public static void main(String[] args) {
        launch(args);
    }
}

---------- END SOURCE ----------

CUSTOMER SUBMITTED WORKAROUND :
if jDialog is created in  " start "  method, then works fine
Comments
please re-open if this is not a duplicate of 8021381
14-08-2013

Neither start() method, nor a constructor is the right place to create JDialogs, it should be done via SwingUtilities.invokeLater() on the event dispatch thread. Anyway, it looks like a duplicate of 8021381 and will be fixed in 7u40. Leonid, could you check, please?
14-08-2013

Confirming that it's a dup of JDK-8021381: NPE happens when initActiveWindowsTracking tries to use an AppContext obtained via AppContext.getAppContext() call.
14-08-2013

I don't think it's regression, bug report seems to indicated it happens in 7u25 as well. And there is workaround suggested in the bug itself too. So I don't think it should be a stopper.
13-08-2013

seems like NPE is coming from swing/awt - assigning to them for initial evaluation. is it related to threadgroup/appcontext issues ?
13-08-2013