< prev index next >

src/jdk.jlink/share/classes/jdk/tools/jlink/internal/Jlink.java

Print this page

        

*** 25,35 **** --- 25,37 ---- package jdk.tools.jlink.internal; import java.lang.module.Configuration; import java.lang.module.ModuleFinder; import java.nio.ByteOrder; + import java.nio.file.Files; import java.nio.file.Path; + import java.nio.file.Paths; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Objects;
*** 174,184 **** this.output = output; this.modulepaths = modulepaths; this.modules = Objects.requireNonNull(modules); this.limitmods = Objects.requireNonNull(limitmods); this.endian = Objects.requireNonNull(endian); ! this.finder = moduleFinder(); } /** * @return the modulepaths */ --- 176,203 ---- this.output = output; this.modulepaths = modulepaths; this.modules = Objects.requireNonNull(modules); this.limitmods = Objects.requireNonNull(limitmods); this.endian = Objects.requireNonNull(endian); ! ModuleFinder finder = moduleFinder(modulepaths, limitmods, modules); ! if (! finder.find("java.base").isPresent()) { ! Path sysPath = getDefaultModulePath(); ! if (sysPath != null) { ! this.modulepaths.add(sysPath); ! } ! // if java.base is still not found, error will be thrown later! ! finder = moduleFinder(modulepaths, limitmods, modules); ! } ! this.finder = finder; ! } ! ! /** ! * @return the system module path or null ! */ ! public static Path getDefaultModulePath() { ! Path jmods = Paths.get(System.getProperty("java.home"), "jmods"); ! return Files.isDirectory(jmods)? jmods : null; } /** * @return the modulepaths */
*** 242,252 **** return Configuration.empty().resolve(finder, ModuleFinder.of(), modules); } ! private ModuleFinder moduleFinder() { Path[] entries = modulepaths.toArray(new Path[0]); ModuleFinder finder = ModulePath.of(Runtime.version(), true, entries); if (!limitmods.isEmpty()) { finder = JlinkTask.limitFinder(finder, limitmods, modules); } --- 261,272 ---- return Configuration.empty().resolve(finder, ModuleFinder.of(), modules); } ! private static ModuleFinder moduleFinder(List<Path> modulepaths, ! Set<String> limitmods, Set<String> modules) { Path[] entries = modulepaths.toArray(new Path[0]); ModuleFinder finder = ModulePath.of(Runtime.version(), true, entries); if (!limitmods.isEmpty()) { finder = JlinkTask.limitFinder(finder, limitmods, modules); }
< prev index next >