JDK-8027980 : JNLP run from 32-bit Internet Explorer 9 launches Java 64-bit
  • Type: Bug
  • Component: deploy
  • Sub-Component: webstart
  • Affected Version: 7u45
  • Priority: P3
  • Status: Closed
  • Resolution: Duplicate
  • OS: windows_7
  • Submitted: 2013-10-24
  • Updated: 2013-11-15
  • Resolved: 2013-11-15
Related Reports
Duplicate :  
Description
FULL PRODUCT VERSION :
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)

AND 32-bit:

java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) Client VM (build 24.45-b08, mixed mode, sharing)

ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows [Version 6.1.7601]

EXTRA RELEVANT SYSTEM CONFIGURATION :
Internet Explorer 9.0.8112.16421

A DESCRIPTION OF THE PROBLEM :
On Win7 with IE9 and both 32 and 64-bit Java installed, on previous releases of 1.7, launching a JNLP from 32-bit Internet Explorer would always use 32-bit Java.  As of 1.7.0_45, this is no longer the case--the 64-bit version gets used.

This is a big problem for applications which require a PKCS#11 library (for smart card logins) that is currently only available in 32-bit Java.

 

REGRESSION.  Last worked in version 7u21

ADDITIONAL REGRESSION INFORMATION:
java version "1.7.0_21"
Java(TM) SE Runtime Environment (build 1.7.0_21-b11)
Java HotSpot(TM) Client VM (build 23.21-b01, mixed mode, sharing)

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Open Internet Explorer 9 32-bit version
launch the following Java Webstart application from within the browser:

http://docs.oracle.com/javase/tutorialJWS/samples/uiswing/AccessibleScrollDemoProject/AccessibleScrollDemo.jnlp

64-bit JRE will be used under 1.7.0_45
32-bit JRE will be used under 1.7.0-21


EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
32-bit JRE should have been used
ACTUAL -
Console output:

Java Web Start 10.45.2.18
Using JRE version 1.7.0_45-b18 Java HotSpot(TM) 64-Bit Server VM

REPRODUCIBILITY :
This bug can be reproduced always.

CUSTOMER SUBMITTED WORKAROUND :
1. Enable webstart application desktop icon installation
2. launch application from IE9 32-bit
3. If application's desktop icon is successfully installed, use the icon to launch the app.  If not, open javaws -viewer, right click application, install icon
4. Use desktop icon to launch the app -- it will use 32-bit java like it is supposed to
Comments
I didn't reproduce the behavior that you described for 7u21 - we always launch javaws 64-bit(I tried with 7u21 b01 and 7u17 b01), if both versions 32 & 64 bits are installed. Moreover, this is expected behavior after "7167348: use HKLM/Software for registering handler for JNLP file extension". http://closedjdk.us.oracle.com/jdk8/deploy/deploy/rev/bc2f89f348f7 The comment in the code says: // Scans both 32/64-bit entries at SOFTWARE\\Wow6432Node\\JavaSoft\\Java Web Start // and SOFTWARE\\JavaSoft\\Java Web Start respectively... // If same version exists for both 32 and 64-bit, 64-bit will be used... BOOL GetLatestJavaws32or64BitHome(LPTSTR pszMaxKeyName, size_t maxKeySize, LPTSTR pszJavawsHome, size_t javawsHomeSize) ... // Restores the JNLP file association... // The registration applies to all process, 32 or 64 bit. So a 64-bit system, // if latest javaws registered is 64-bit, clicking on a jnlp link in a 32-bit // browser will launch the 64-bit javaws... BOOL RestoreJNLPfileAssociation() ... Also, it's a duplicate of JDK-8004142. And I think that should be also closed as not an issue.
15-11-2013