mandy chung
2018-02-13 00:44:41 UTC
Hi all,
I'm not sure if core-libs is the right mailing list for jigsaw/modules
questions these days (rather than jigsaw-dev), so please feel free to
forward this there if it's the more appropriate list.
cc'ing jigsaw-devI'm not sure if core-libs is the right mailing list for jigsaw/modules
questions these days (rather than jigsaw-dev), so please feel free to
forward this there if it's the more appropriate list.
I have the following code carried over from java 8 (actually much earlier
final Resource rb =
ResourceBundle.getBundle("sun.security.util.AuthResources");
Resource bundle follows the same encapsulation rule as described infinal Resource rb =
ResourceBundle.getBundle("sun.security.util.AuthResources");
Module::getResourceAsStream [1] except that a resource bundle is
considered as a resource regardless of its format.
ResourceBundle.getBundle(String baseName) finds the specified resource
bundle from the caller's module. It will first search the resource
bundle local in the caller's module (via Module::getResourceAsStream)
and then using the caller's class loader to search for the resource (via
ClassLoader::getResourceAsStream). Since the caller is unnamed module
in your case, for it to access "sun.security.util.AuthResources",
java.base/sun.security.util has to be open unconditionally and there is
no CLI option to do that.
If you call ResourceBundle.getBundle("sun.security.util.AuthResources",
Object.class.getModule()) specifying the module of the resource bundle,
then you can break the encapsulation by `--add-opens
java.base/sun.security.util=ALL-UNNAMED`
I'm a bit surprised that you depend on JDK internal resource bundle.
Can you help us understand why you use it?
Mandy
[1]
https://download.java.net/java/jdk10/docs/api/java/util/ResourceBundle.html#getBundle(java.lang.String,java.util.Locale,java.lang.Module)