JDK-6188839 : webstart not download the classes with the comma separated package name in 5.0_01
  • Type: Bug
  • Component: docs
  • Sub-Component: guides
  • Affected Version: 5.0u1
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: windows_2000
  • CPU: x86
  • Submitted: 2004-11-01
  • Updated: 2011-02-16
  • Resolved: 2005-01-11
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.

To download the current JDK release, click here.
Other
5.0u2 b01Fixed
Description
J2SE Version (please include all output from java -version flag):
  java version "1.5.0_01-ea"
  Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_01-ea-b04)
  Java HotSpot(TM) Client VM (build 1.5.0_01-ea-b04, mixed mode, sharing)


Does this problem occur on J2SE 1.3, 1.4.x or 1.5?  Yes / No (pick one)
  No to all, it works find with 1.5.

Operating System Configuration Information (be specific):
  Microsoft Windows 2000 [Version 5.00.2195]

Hardware Configuration Information (be specific):
  Compaq P4 1.4 Gz


Bug Description:

The problem is in his jnlp file in the line:\

   <package name="dsi.ext.document.*,dsi.ext.storage.*,dsi.ext.search.*" part="document" recursive = "true"/>

this says litterally that the part "document" contains the package:
  
   "dsi.ext.document.*,dsi.ext.storage.*,dsi.ext.search.*"

which is clearly not a legal package name, and it is also clear that the 
part actually contains the three packages

   "dsi.ext.document.*", "dsi.ext.storage.*", and "dsi.ext.search.*"

so it looks like if you replace the above line with:

<package name="dsi.ext.document.*" part="document" recursive = "true"/>
<package name="dsi.ext.storage.*" part="document" recursive = "true"/>
<package name="dsi.ext.search.*" part="document" recursive = "true"/>

it would work.

The comma seperated package name is not a syntax defined in the jnlp
specification.  The old 1.5.0 version didn't mind since it tended to over
eagerly download everything whenever accessing a non-existing class. it was
still interpreting "dsi.ext.document.*,dsi.ext.storage.*,dsi.ext.search.*" 
as one package name.

The new code now will never download the jars listed in part "document" until
the classloader tries to load a classs in one of the packages specified for
that part.  This is why it didn't download in this case, since the only 
package known to be in that part was the long string with all three package
names seperated by commas.
###@###.### 11/1/04 16:37 GMT

Comments
EVALUATION ###@###.### suggested the following wording for the Release Notes: In 5.0u1, a change was made to Java Web Start to fix lazy downloading for jar files with part attributes when there exists a package element for that part. As a result, lazy parts for which package elements are defined will only be downloaded if a resource in one of the listed packages is accessed. As a result of this fix, if a lazy part uses package elements, the package elements must be complete (ie: there must be a package element for all the packages in the jars that make up the part). If there are package elements, but they are not complete (or are malformed) the part may not be downloaded when needed. ###@###.### 2005-1-11 22:59:37 GMT
11-01-2005

SUGGESTED FIX change the jnlp file in the line:\ <package name="dsi.ext.document.*,dsi.ext.storage.*,dsi.ext.search.*" part="document" recursive = "true"/> to <package name="dsi.ext.document.*" part="document" recursive = "true"/> <package name="dsi.ext.storage.*" part="document" recursive = "true"/> <package name="dsi.ext.search.*" part="document" recursive = "true"/> it would work. ###@###.### 11/1/04 16:37 GMT
01-11-2004