ModuleFinder can't find one module
Alan Bateman
Alan.Bateman at oracle.com
Tue Jan 31 13:34:40 UTC 2023
On 31/01/2023 12:52, Alex Orlov wrote:
> :
> To create module finder I do:
> ModuleFinder jarModuleFinder =
> ModuleFinder.of(jarModulePaths.toArray(new Path[jarModulePaths.size()]));
> To check found modules I do:
> final Set<String> foundModulePaths = new HashSet<>();
> for (ModuleReference reference : moduleFinder.findAll()) {
> var path = reference.location().get().getPath();
> foundModulePaths.add(path);
> }
>
findAll will find occurrence of all modules so it might be that the
module in jakarta.servlet.jsp.jstl-2.0.0.jar has the same name as a
module that is one of the preceding elements of the module path. Can you
try this:
java --module-path <dir>/jakarta.servlet.jsp.jstl-2.0.0.jar --list-modules
and you should see the module in output. Then change your loop above to
print the module names and see if it gets printed.
BTW: In the above you are using URI::getPath. That returns the decoded
path component of the file URI - you can't reliably use this as a file
path, I think the code you want here is Path.of(uri).toString().
-Alan
More information about the jigsaw-dev
mailing list