8026398: Can't load jdk.Exported, ClassNotFoundException

2013-10-14 Thread Alan Bateman


This is an update to the BuildMetaIndex tool, the tool used in the build 
to generate the meta-index file.


The problem is that the tool assumes that there are at least two levels 
of package in the name of each type. This causes a problem for 
jdk.Exported, the annotation that was added as part of JEP 179 [1]. At 
this time you can't load this class because the entry in the meta-index 
file is generated as jdk/internal/ rather than jdk/.


The tool is crying out for a re-write but it's a bit late in JDK 8 so 
I've instead did enough to get it to handle top-level packages in the 
known prefix set. The change mans that when a type in the top-level 
package is found then it adds a special value (TOP) into its second 
package set, this is enough to allow it be handled when emitting the 
lines for the known prefixes.


The webrev with the proposed change is here:
  http://cr.openjdk.java.net/~alanb/8026398/webrev/

Thanks,

-Alan.

[1] http://openjdk.java.net/jeps/179


Re: 8026398: Can't load jdk.Exported, ClassNotFoundException

2013-10-14 Thread Chris Hegarty

The changes look right to me, and prudent given where we are with jdk8.

It suspect that this would have gone unnoticed forever, if you were not 
to add this type.


-Chris.

On 14/10/2013 14:39, Alan Bateman wrote:


This is an update to the BuildMetaIndex tool, the tool used in the build
to generate the meta-index file.

The problem is that the tool assumes that there are at least two levels
of package in the name of each type. This causes a problem for
jdk.Exported, the annotation that was added as part of JEP 179 [1]. At
this time you can't load this class because the entry in the meta-index
file is generated as jdk/internal/ rather than jdk/.

The tool is crying out for a re-write but it's a bit late in JDK 8 so
I've instead did enough to get it to handle top-level packages in the
known prefix set. The change mans that when a type in the top-level
package is found then it adds a special value (TOP) into its second
package set, this is enough to allow it be handled when emitting the
lines for the known prefixes.

The webrev with the proposed change is here:
http://cr.openjdk.java.net/~alanb/8026398/webrev/

Thanks,

-Alan.

[1] http://openjdk.java.net/jeps/179


Re: 8026398: Can't load jdk.Exported, ClassNotFoundException

2013-10-14 Thread Mandy Chung

On 10/14/2013 6:39 AM, Alan Bateman wrote:


This is an update to the BuildMetaIndex tool, the tool used in the 
build to generate the meta-index file.


The problem is that the tool assumes that there are at least two 
levels of package in the name of each type. This causes a problem for 
jdk.Exported, the annotation that was added as part of JEP 179 [1]. At 
this time you can't load this class because the entry in the 
meta-index file is generated as jdk/internal/ rather than jdk/.


The tool is crying out for a re-write but it's a bit late in JDK 8 so 
I've instead did enough to get it to handle top-level packages in the 
known prefix set. The change mans that when a type in the top-level 
package is found then it adds a special value (TOP) into its second 
package set, this is enough to allow it be handled when emitting the 
lines for the known prefixes.


The webrev with the proposed change is here:
  http://cr.openjdk.java.net/~alanb/8026398/webrev/



The change looks okay to me and good enough to handle this jdk.Exported 
case.


Mandy