JDK-7156244 : change in PluginWindowFactory.createWindow cause problem with FX 2.0.3 runtime
Type:Bug
Component:deploy
Sub-Component:plugin
Affected Version:7u4
Priority:P2
Status:Closed
Resolution:Fixed
OS:windows
CPU:generic,x86
Submitted:2012-03-23
Updated:2013-09-12
Resolved:2012-04-17
The Version table provides details related to the release that this issue/RFE will be addressed.
Unresolved : Release in which this issue/RFE will be addressed. Resolved: Release in which this issue/RFE has been resolved. Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.
install FX 2.0.3 and JRE 7u4, try to load FX applet in browser, it will fail with signature mistach in PluginWindowFactory.createWindow
Comments
EVALUATION
Problem: If system has FX 2.0.3 and JRE 7u4 -> you cannot load any FX browser applet due to the following excetion:
java.lang.AbstractMethodError: com.sun.deploy.uitoolkit.PluginWindowFactory.createWindow(JLjava/lang/String;ZLsun/plugin2/main/client/ModalityInterface;Lsun/plugin2/message/Pipe;I)Lcom/sun/deploy/uitoolkit/Window;
at sun.plugin2.main.client.PluginMain$AppletFrameCreator.run(Unknown Source)
at com.sun.deploy.uitoolkit.impl.fx.ui.FXAppContext.invokeLater(Unknown Source)
at sun.plugin2.main.client.PluginMain$2.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
PluginMain: could not create embedded frame
This is because we changed PluginWindowFactory.createWindow signature in 7u4/FX2u1, to implement our own MacOS plugin.
This is a valid use case because we ship JRE 7u4 runtime offline installer standalone (no co-install of FX). Only JRE online installer has FX co-install. So, for example, if people has 7u3 + FX2u3, and they manually install 7u4 runtime offline installer only, they will run into this problem (7u4 + FX 2u3).
For the similar case of 7u3 + FX 2u2 - it works.
Fix: The argument involved in the signature change is MacOS specific. For windows, it uses default value in both old (0 - long type) and new (null - String type) case. We detect if we got the null argument and the AbstractMethodError, and if so, re-try to call into the old method signature with 0 as argument.
No change in FX runtime is needed.
Test: Make sure FX applet can be loaded in browser with 7u4, using either 2.0.3 or 2.1 FX runtime.
23-03-2012
EVALUATION
problem occur since 7u4 b05, when we added macos plugin support: http://monaco.sfbay.sun.com/detail.jsf?cr=7100315
23-03-2012
EVALUATION
exception is:
java.lang.AbstractMethodError: com.sun.deploy.uitoolkit.PluginWindowFactory.createWindow(JLjava/lang/String;ZLsun/plugin2/main/client/ModalityInterface;Lsun/plugin2/message/Pipe;I)Lcom/sun/deploy/uitoolkit/Window;
at sun.plugin2.main.client.PluginMain$AppletFrameCreator.run(Unknown Source)
at com.sun.deploy.uitoolkit.impl.fx.ui.FXAppContext.invokeLater(Unknown Source)
at sun.plugin2.main.client.PluginMain$2.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
PluginMain: could not create embedded frame