< 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 >