JAR searched on the classpath instead of the module path in Build #156

Paul Bakker paul.bakker.nl at gmail.com
Sat Mar 18 19:17:26 UTC 2017


Thanks for the quick fix! When will a new build available? I need this fix
for my Devoxx presentation Tuesday, or come up with a different plan to
work around it.

Paul

On Sat, Mar 18, 2017 at 1:09 AM, Alan Bateman <Alan.Bateman at oracle.com>
wrote:

> On 18/03/2017 07:09, Paul Bakker wrote:
>
> Following up on my earlier message, I think I found a bug in
>> jdk.internal.loader.BuiltinClassLoader.
>> When a resource is loaded from a package that does not contain classes in
>> an automatic module, the loading works fine. When the resource is loaded
>> from a package that does contain classes, the loading fails.
>>
>> In jdk.internal.loader.BuiltinClassLoader on line 261 the following
>> happens:
>>
>>    public URL findResource(String name) {
>>          String pn = Resources.toPackageName(name);
>>          LoadedModule module = packageToModule.get(pn);
>>          if (module != null) {
>>
>> 1) When no classes exist in the package (but other resources do), the
>> module is null
>> 2) When classes do exist in the package, the module has a value.
>>
> Right, the packages that an automatic module contains are the packages
> that contain class files. Since this is an automatic module then there
> should be no encapsulation (same thing for open modules). The bug seems to
> be a recent regression where non-class resources in packages are now
> encapsulated. We need more tests here. I'll push a fix for this today to
> jake so that it goes into JDK 9 with the next integration (more on this
> soon as JDK 9 is in RDP2). Thanks for running into this.
>
> In passing, if hibernate.core does eventually migrate to a module then
> using LocalSchemaLocator.class.getClassLoader().getResource(...) to local
> non-class resources in its own JAR file should change to
> LocalSchemaLocator.class.getResource(...). Then it will be guaranteed to
> locate its own resource and will also allow it to encapsulate it so that it
> is not located by others.
>
> -Alan
>
>


More information about the jigsaw-dev mailing list