Review request for JDK-6760902: inconsistent behavior in bootstrap class loader for classes and resources

Paul Sandoz paul.sandoz at oracle.com
Thu Jan 16 15:59:26 UTC 2014


On Jan 16, 2014, at 4:51 PM, Mandy Chung <mandy.chung at oracle.com> wrote:

> 
> On 1/16/2014 7:39 AM, Paul Sandoz wrote:
>> On Jan 16, 2014, at 2:27 AM, Mandy Chung <mandy.chung at oracle.com> wrote:
>> 
>>> There is an inconsistency in searching classes vs resources if bootclasspath contains an empty path.  Empty path on bootclasspath is skipped by the bootstrap class loader when searching classes while it defaults to current working directory when searching resources as the application class loader.
>> Just curious, where is the code that skips empty paths in the bootclasspath when loading classes? Is that in the VM?
> 
> Yes it's in the VM which implements the class loading.   I don't know the history and I guess splitting the implementation of class loading vs resource lookup in the VM and jdk could be due to no actual ClassLoader implementation (null instead).
> 

OK.


>>>  This fixes sun.misc.Launcher to skip empty path when constructing the paths from bootclasspath for resource lookup.
>>> 
>>> Webrev at:
>>> http://cr.openjdk.java.net/~mchung/jdk9/webrevs/6760902/webrev.00/
>>> 
>> Perhaps it is better to merge GetResource2.sh into GetResource.sh.
> 
> I was considering if merging them would be better and separating it makes it clear for what it tests for.  On the other hand, I don't like duplication and I probably can merge them and clean
> 

OK, the echo statements make things quite clear IMHO.


>> I am so tempted to change this too :-)
>> 
>>  423                 if (pos - lastPos > 0) {
> 
> Me too and time to do it.  Will post another webrev.
> 

While you are at it, there is a JavaDoc error for the method ref:

        /**
         * This class loader supports dynamic additions to the class path
         * at runtime.
         *
         * @see java.lang.instrument.Instrumentation#appendToSystemClassPathSearch
         */
        private void appendToClassPathForInstrumentation(String path) {

Even though it is a private method that JavaDoc is useful since one can click through via the IDE.

Paul.


More information about the core-libs-dev mailing list