Issue: Modules can only open resources as streams

mark.reinhold at mark.reinhold at
Fri Mar 11 17:49:51 UTC 2016

2016/3/3 7:42 -0800, david.lloyd at
> Module.getResourceAsStream() is the only way a resource can be loaded 
> from a module.  This makes it impossible to do either of the following:
> - Determine the size of a resource in advance of loading it
> - Determine the existence of a resource without opening it
> Loading resources as allowed these things to be done 
> (among other things), however it is also disadvantageous due to the 
> heavyweight nature of that class.
> I had earlier come up with a simple patch [1], initially as a way to 
> address JDK-6865375 [2], which introduced the idea of a Resource class 
> that is associated with a ClassLoader, with a name, URL, size, and 
> stream factory method, which would also be a clean solution here (though 
> with the addition of a Module property as well since in Jigsaw they're 
> separate).
> The idea is to put resources on a similar footing to classes, whereby 
> you can (if suitably permitted) acquire their class loaders just like 
> Class.getClassLoader() allows you to do for classes.  This also allows 
> things like ServiceLoader to load classes directly from the module which 
> contained the corresponding service descriptor.

New issue:

- Mark

More information about the jpms-spec-experts mailing list