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 ------------- Commit messages: - fix file separator in module finder with custom fs Changes: https://git.openjdk.java.net/jdk/pull/7632/files Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=7632&range=00 Issue: https://bugs.openjdk.java.net/browse/JDK-8282444 Stats: 7 lines in 4 files changed: 1 ins; 0 del; 6 mod Patch: https://git.openjdk.java.net/jdk/pull/7632.diff Fetch: git fetch https://git.openjdk.java.net/jdk pull/7632/head:pull/7632 PR: https://git.openjdk.java.net/jdk/pull/7632