diff --git a/src/java.base/share/classes/jdk/internal/module/ModulePath.java b/src/java.base/share/classes/jdk/internal/module/ModulePath.java index 99713872588..6939425f8fc 100644 --- a/src/java.base/share/classes/jdk/internal/module/ModulePath.java +++ b/src/java.base/share/classes/jdk/internal/module/ModulePath.java @@ -40,6 +40,7 @@ import java.lang.module.ModuleFinder; import java.lang.module.ModuleReference; import java.net.URI; import java.nio.file.DirectoryStream; +import java.nio.file.FileVisitOption; import java.nio.file.Files; import java.nio.file.NoSuchFileException; import java.nio.file.Path; @@ -58,6 +59,7 @@ import java.util.jar.Manifest; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; +import java.util.stream.Stream; import java.util.zip.ZipException; import java.util.zip.ZipFile; @@ -663,10 +665,10 @@ public class ModulePath implements ModuleFinder { // -- exploded directories -- private Set explodedPackages(Path dir) { - try { - return Files.find(dir, Integer.MAX_VALUE, - ((path, attrs) -> attrs.isRegularFile() && !isHidden(path))) - .map(path -> dir.relativize(path)) + try (Stream s = Files.find(dir, Integer.MAX_VALUE, + ((path, attrs) -> attrs.isRegularFile() && !isHidden(path)), + FileVisitOption.FOLLOW_LINKS)) { + return s.map(path -> dir.relativize(path)) .map(this::toPackageName) .flatMap(Optional::stream) .collect(Collectors.toSet());