On Mon, 28 Feb 2022 11:12:17 GMT, Chris Hegarty <che...@openjdk.org> wrote:

> The module finder implementation incorrectly uses the path-separator
> character from the default file system, when mapping the relative path
> of an entry in an exploded module to a package name. This causes
> problems on Windows [*] when using a module finder with a custom file
> system that has a path-separator character that differs from that of the
> default file system, e.g. the zip file system (which uses '/',
> rather than '\' ).
> 
> Rather than adding a new test for this, I deciced to just modify an
> existing one. The existing test exercises the module finder with a
> custom file system, but does so with modules have trivial single-level
> packages names. I just expanded the module to have a subpackage. This
> is sufficient to reproduce the bug, and verify the fix.
> 
> [*]
> 
> java.lang.module.FindException: Error reading module: /m2
>         at 
> java.base/jdk.internal.module.ModulePath.readModule(ModulePath.java:350)
>         at 
> java.base/jdk.internal.module.ModulePath.scanDirectory(ModulePath.java:284)
>         at java.base/jdk.internal.module.ModulePath.scan(ModulePath.java:232)
>         at 
> java.base/jdk.internal.module.ModulePath.scanNextEntry(ModulePath.java:190)
>         at 
> java.base/jdk.internal.module.ModulePath.findAll(ModulePath.java:166)
>         at 
> ModulesInCustomFileSystem.listAllModules(ModulesInCustomFileSystem.java:108)
>         at 
> ModulesInCustomFileSystem.testZipFileSystem(ModulesInCustomFileSystem.java:97)
>         at 
> ModulesInCustomFileSystem.testExplodedModulesInZipFileSystem(ModulesInCustomFileSystem.java:68)
>         at ...
> Caused by: java.lang.module.InvalidModuleDescriptorException: Package q.r not 
> found in module
>         at 
> java.base/jdk.internal.module.ModuleInfo.invalidModuleDescriptor(ModuleInfo.java:1212)
>         at 
> java.base/jdk.internal.module.ModuleInfo.doRead(ModuleInfo.java:330)
>         at java.base/jdk.internal.module.ModuleInfo.read(ModuleInfo.java:129)
>         at 
> java.base/jdk.internal.module.ModulePath.readExplodedModule(ModulePath.java:689)
>         at 
> java.base/jdk.internal.module.ModulePath.readModule(ModulePath.java:320)
>         ... 36 more

This pull request has now been integrated.

Changeset: 369291b2
Author:    Chris Hegarty <che...@openjdk.org>
URL:       
https://git.openjdk.java.net/jdk/commit/369291b265e13d625c5f465da9b1854c0d70c435
Stats:     10 lines in 5 files changed: 2 ins; 0 del; 8 mod

8282444: Module finder incorrectly assumes default file system path-separator 
character

Reviewed-by: alanb

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

PR: https://git.openjdk.java.net/jdk/pull/7632

Reply via email to