FULL PRODUCT VERSION :
Windows 7 Professional:
========================
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) Client VM (build 25.121-b13, mixed mode, sharing)
Windows 10 Enterprise:
=======================
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
- Windows 10 Enterprise (64-Bit)
- Windows 7 Professional (64-Bit)
A DESCRIPTION OF THE PROBLEM :
If a jnlp file contains more than one <java>-configuration (inside of the <resources>-node) and these configurations sepcify "java-vm-args", the final JVM instance will be created with wrong arguments. The arguments are taken from the first <java>-configuration and the "java-vm-args" of the matching <java>-configuration.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Create a jnlp file with at least two <java>-configurations. The first configuration should be a version which is not installed on your pc. It doesn't matter if this version is older or doesn't exist. Webstart will always use the first <java>-configuration to start the initial JVM.
For example:
<resources>
<java version="1.100*" href="http://java.sun.com/products/autodl/j2se" initial-heap-size="256m" max-heap-size="768m" java-vm-args="-da" />
<java version="1.8*" href="http://java.sun.com/products/autodl/j2se" initial-heap-size="256m" max-heap-size="768m" java-vm-args="-ea" />
...
</resources>
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The final JVM instance should only respect the specified "java-vm-args" of the matching <java>-configuration.
ACTUAL -
The final JVM instance was started with the "java-vm-args" of the first and the matching <java>-configuration.
ERROR MESSAGES/STACK TRACES THAT OCCUR :
Log started: Mo, 6 Mär 2017 14:10:28 +0100
Java Web Start 11.121.2.13
JRE-Version verwenden
1.8.0_121-b13 Java HotSpot(TM) Client VM
basic: Java part started
...
Match: digest selected JREDesc: JREDesc[version 1.8*, versionType=0, secure=false, heap=268435456-805306368, args=-ea, href=http://java.sun.com/products/autodl/j2se, null, null], JREInfo: JREInfo for index 3:
platform is: 1.8
product is: 1.8.0_121
location is: http://java.sun.com/products/autodl/j2se
path is: C:\Program Files (x86)\Java\jre1.8.0_121\bin\javaw.exe
args is:
native platform is: Windows, x86 [ x86, 32bit ]
JavaFX runtime is: JavaFX 1.8.0_121 at: C:\Program Files (x86)\Java\jre1.8.0_121\lib\ext\
enabled is: true
registered is: true
system is: true
Match: selecting maxHeap: 805306368
Match: selecting InitHeap: 268435456
Match: digesting vmargs: -ea
security: --- parseCommandLine converted : -ea
into:
[-ea]
Match: digested vmargs: [JVMParameters: isSecure: true, args: "-ea"]
Match: JVM args after accumulation: [JVMParameters: isSecure: true, args: "-ea"]
Match: endTraversal ..
security: --- parseCommandLine converted : -Xms256m
into:
[-Xms256m]
network: Created version ID: 1.8.0.121
network: Created version ID: 1.8
network: Created version ID: 1.8.0.121
Match: Running JREInfo Version match: 1.8.0.121 == 1.8.0.121
Match: Running JVM args match: have:<[JVMParameters: isSecure: true, args: "-Xms256m" "-da" "-ea" "-Xmx768m"]> satisfy want:<[JVMParameters: isSecure: true, args: "-Xmx768m" "-Xms256m" "-ea"]>
...
basic: JREMatcher:
JREDesc: JREDesc[version 1.8*, versionType=0, secure=false, heap=268435456-805306368, args=-ea, href=http://java.sun.com/products/autodl/j2se, null, null]
JREInfo: JREInfo for index 3:
platform is: 1.8
product is: 1.8.0_121
location is: http://java.sun.com/products/autodl/j2se
path is: C:\Program Files (x86)\Java\jre1.8.0_121\bin\javaw.exe
args is:
native platform is: Windows, x86 [ x86, 32bit ]
JavaFX runtime is: JavaFX 1.8.0_121 at: C:\Program Files (x86)\Java\jre1.8.0_121\lib\ext\
enabled is: true
registered is: true
system is: true
Init Heap: 268435456
Max Heap: 805306368
Satisfying: true, true
SatisfyingVersion: true
SatisfyingJVMArgs: true, true
SatisfyingSecure: true
Selected JVMParam: [JVMParameters: isSecure: true, args: "-Xmx768m" "-Xms256m" "-ea"]
Running JVMParam: [JVMParameters: isSecure: true, args: "-Xms256m" "-da" "-ea" "-Xmx768m"]
basic: continuing launch in this VM
REPRODUCIBILITY :
This bug can be reproduced always.
CUSTOMER SUBMITTED WORKAROUND :
The first <java>-configuration in the jnlp file should have no "java-vm-args" specified.
Windows 7 Professional:
========================
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) Client VM (build 25.121-b13, mixed mode, sharing)
Windows 10 Enterprise:
=======================
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
- Windows 10 Enterprise (64-Bit)
- Windows 7 Professional (64-Bit)
A DESCRIPTION OF THE PROBLEM :
If a jnlp file contains more than one <java>-configuration (inside of the <resources>-node) and these configurations sepcify "java-vm-args", the final JVM instance will be created with wrong arguments. The arguments are taken from the first <java>-configuration and the "java-vm-args" of the matching <java>-configuration.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Create a jnlp file with at least two <java>-configurations. The first configuration should be a version which is not installed on your pc. It doesn't matter if this version is older or doesn't exist. Webstart will always use the first <java>-configuration to start the initial JVM.
For example:
<resources>
<java version="1.100*" href="http://java.sun.com/products/autodl/j2se" initial-heap-size="256m" max-heap-size="768m" java-vm-args="-da" />
<java version="1.8*" href="http://java.sun.com/products/autodl/j2se" initial-heap-size="256m" max-heap-size="768m" java-vm-args="-ea" />
...
</resources>
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The final JVM instance should only respect the specified "java-vm-args" of the matching <java>-configuration.
ACTUAL -
The final JVM instance was started with the "java-vm-args" of the first and the matching <java>-configuration.
ERROR MESSAGES/STACK TRACES THAT OCCUR :
Log started: Mo, 6 Mär 2017 14:10:28 +0100
Java Web Start 11.121.2.13
JRE-Version verwenden
1.8.0_121-b13 Java HotSpot(TM) Client VM
basic: Java part started
...
Match: digest selected JREDesc: JREDesc[version 1.8*, versionType=0, secure=false, heap=268435456-805306368, args=-ea, href=http://java.sun.com/products/autodl/j2se, null, null], JREInfo: JREInfo for index 3:
platform is: 1.8
product is: 1.8.0_121
location is: http://java.sun.com/products/autodl/j2se
path is: C:\Program Files (x86)\Java\jre1.8.0_121\bin\javaw.exe
args is:
native platform is: Windows, x86 [ x86, 32bit ]
JavaFX runtime is: JavaFX 1.8.0_121 at: C:\Program Files (x86)\Java\jre1.8.0_121\lib\ext\
enabled is: true
registered is: true
system is: true
Match: selecting maxHeap: 805306368
Match: selecting InitHeap: 268435456
Match: digesting vmargs: -ea
security: --- parseCommandLine converted : -ea
into:
[-ea]
Match: digested vmargs: [JVMParameters: isSecure: true, args: "-ea"]
Match: JVM args after accumulation: [JVMParameters: isSecure: true, args: "-ea"]
Match: endTraversal ..
security: --- parseCommandLine converted : -Xms256m
into:
[-Xms256m]
network: Created version ID: 1.8.0.121
network: Created version ID: 1.8
network: Created version ID: 1.8.0.121
Match: Running JREInfo Version match: 1.8.0.121 == 1.8.0.121
Match: Running JVM args match: have:<[JVMParameters: isSecure: true, args: "-Xms256m" "-da" "-ea" "-Xmx768m"]> satisfy want:<[JVMParameters: isSecure: true, args: "-Xmx768m" "-Xms256m" "-ea"]>
...
basic: JREMatcher:
JREDesc: JREDesc[version 1.8*, versionType=0, secure=false, heap=268435456-805306368, args=-ea, href=http://java.sun.com/products/autodl/j2se, null, null]
JREInfo: JREInfo for index 3:
platform is: 1.8
product is: 1.8.0_121
location is: http://java.sun.com/products/autodl/j2se
path is: C:\Program Files (x86)\Java\jre1.8.0_121\bin\javaw.exe
args is:
native platform is: Windows, x86 [ x86, 32bit ]
JavaFX runtime is: JavaFX 1.8.0_121 at: C:\Program Files (x86)\Java\jre1.8.0_121\lib\ext\
enabled is: true
registered is: true
system is: true
Init Heap: 268435456
Max Heap: 805306368
Satisfying: true, true
SatisfyingVersion: true
SatisfyingJVMArgs: true, true
SatisfyingSecure: true
Selected JVMParam: [JVMParameters: isSecure: true, args: "-Xmx768m" "-Xms256m" "-ea"]
Running JVMParam: [JVMParameters: isSecure: true, args: "-Xms256m" "-da" "-ea" "-Xmx768m"]
basic: continuing launch in this VM
REPRODUCIBILITY :
This bug can be reproduced always.
CUSTOMER SUBMITTED WORKAROUND :
The first <java>-configuration in the jnlp file should have no "java-vm-args" specified.