On Wed, 20 Nov 2024 17:27:18 GMT, jyxzwd <d...@openjdk.org> wrote:

> yeah,I tested it a few mins ago.It works well in the situation mentioned in 
> the issue and in the normal situation, also when a remote/target jdk is set. 
> But I have a doubt, when only using the local jdk, no remote/targetjdk, that 
> is, ImageReaderFactory.class.getClassLoader() will be null, when loading any 
> class located in the runtime image, BOOT_MODULES_JIMAGE will always be the 
> path provided by the built-in default FileSystemProvider. The user-defined 
> FileSystemProvider will make no contribution to loading the classes that 
> exist in the image in this case.Although the built-in default 
> FileSystemProvider is sufficient, are my concerns redundant?

If a tool is using jrtfs to get at the classes/resources in another run-time 
image then you'll have two versions of the jrt FileSystemProvider and the 
support jimage support in use. For the local case (current runtime), the 
classes comes from java.base and be defined to the boot module. For the remote 
case, the classes will be loaded from the remote jrt-fs.jar and defined to 
custom class loader (see JrtFsLoader in JrtFileSystemProvider).

It gets complicated once you replace the default file system provider. The 
change means the "local" provider and image reader won't go through the custom 
file system provider. The "remote" provider and image reader will have their 
I/O intercepted by the custom file system provider.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/21997#issuecomment-2489237978

Reply via email to