< prev index next >
jdk/src/java.base/share/classes/jdk/internal/module/ModuleBootstrap.java
Print this page
@@ -54,12 +54,12 @@
* Initializes/boots the module system.
*
* The {@link #boot() boot} method is called early in the startup to initialize
* the module system. In summary, the boot method creates a Configuration by
* resolving a set of module names specified via the launcher (or equivalent)
- * -m and -addmods options. The modules are located on a module path that is
- * constructed from the upgrade module path, system modules, and application
+ * -m and --add-modules options. The modules are located on a module path that
+ * is constructed from the upgrade module path, system modules, and application
* module path. The Configuration is instantiated as the boot Layer with each
* module in the the configuration defined to one of the built-in class loaders.
*/
public final class ModuleBootstrap {
@@ -125,20 +125,20 @@
PerfCounters.defineBaseTime.addElapsedTimeFrom(t1);
long t2 = System.nanoTime();
- // -upgrademodulepath option specified to launcher
+ // --upgrade-module-path option specified to launcher
ModuleFinder upgradeModulePath
- = createModulePathFinder("jdk.upgrade.module.path");
+ = createModulePathFinder("jdk.module.upgrade.path");
if (upgradeModulePath != null)
systemModules = ModuleFinder.compose(upgradeModulePath, systemModules);
- // -modulepath option specified to the launcher
+ // --module-path option specified to the launcher
ModuleFinder appModulePath = createModulePathFinder("jdk.module.path");
- // The module finder: [-upgrademodulepath] system [-modulepath]
+ // The module finder: [--upgrade-module-path] system [--module-path]
ModuleFinder finder = systemModules;
if (appModulePath != null)
finder = ModuleFinder.compose(finder, appModulePath);
// The root modules to resolve
@@ -147,15 +147,15 @@
// launcher -m option to specify the main/initial module
String mainModule = System.getProperty("jdk.module.main");
if (mainModule != null)
roots.add(mainModule);
- // additional module(s) specified by -addmods
+ // additional module(s) specified by --add-modules
boolean addAllDefaultModules = false;
boolean addAllSystemModules = false;
boolean addAllApplicationModules = false;
- String propValue = System.getProperty("jdk.launcher.addmods");
+ String propValue = getAndRemoveProperty("jdk.module.addmods");
if (propValue != null) {
for (String mod: propValue.split(",")) {
switch (mod) {
case ALL_DEFAULT:
addAllDefaultModules = true;
@@ -170,12 +170,12 @@
roots.add(mod);
}
}
}
- // -limitmods
- propValue = System.getProperty("jdk.launcher.limitmods");
+ // --limit-modules
+ propValue = getAndRemoveProperty("jdk.module.limitmods");
if (propValue != null) {
Set<String> mods = new HashSet<>();
for (String mod: propValue.split(",")) {
mods.add(mod);
}
@@ -214,11 +214,11 @@
}
}
}
}
- // If `-addmods ALL-SYSTEM` is specified then all observable system
+ // If `--add-modules ALL-SYSTEM` is specified then all observable system
// modules will be resolved.
if (addAllSystemModules) {
ModuleFinder f = finder; // observable modules
systemModules.findAll()
.stream()
@@ -226,11 +226,11 @@
.map(ModuleDescriptor::name)
.filter(mn -> f.find(mn).isPresent()) // observable
.forEach(mn -> roots.add(mn));
}
- // If `-addmods ALL-MODULE-PATH` is specified then all observable
+ // If `--add-modules ALL-MODULE-PATH` is specified then all observable
// modules on the application module path will be resolved.
if (appModulePath != null && addAllApplicationModules) {
ModuleFinder f = finder; // observable modules
appModulePath.findAll()
.stream()
@@ -248,11 +248,11 @@
// determine if post resolution checks are needed
boolean needPostResolutionChecks = true;
if (baseUri.getScheme().equals("jrt") // toLowerCase not needed here
&& (upgradeModulePath == null)
&& (appModulePath == null)
- && (System.getProperty("jdk.launcher.patch.0") == null)) {
+ && (!ModulePatcher.isBootLayerPatched())) {
needPostResolutionChecks = false;
}
PrintStream traceOutput = null;
if (Boolean.getBoolean("jdk.launcher.traceResolver"))
@@ -315,11 +315,11 @@
}
PerfCounters.loadModulesTime.addElapsedTimeFrom(t5);
- // -XaddReads and -XaddExports
+ // --add-reads and --add-exports
addExtraReads(bootLayer);
addExtraExports(bootLayer);
// total time to initialize
PerfCounters.bootstrapTime.addElapsedTimeFrom(t0);
@@ -392,17 +392,17 @@
}
}
/**
- * Process the -XaddReads options to add any additional read edges that
+ * Process the --add-reads options to add any additional read edges that
* are specified on the command-line.
*/
private static void addExtraReads(Layer bootLayer) {
// decode the command line options
- Map<String, Set<String>> map = decode("jdk.launcher.addreads.");
+ Map<String, Set<String>> map = decode("jdk.module.addreads.");
for (Map.Entry<String, Set<String>> e : map.entrySet()) {
// the key is $MODULE
String mn = e.getKey();
@@ -429,17 +429,17 @@
}
}
/**
- * Process the -XaddExports options to add any additional read edges that
+ * Process the --add-exports options to add any additional read edges that
* are specified on the command-line.
*/
private static void addExtraExports(Layer bootLayer) {
// decode the command line options
- Map<String, Set<String>> map = decode("jdk.launcher.addexports.");
+ Map<String, Set<String>> map = decode("jdk.module.addexports.");
for (Map.Entry<String, Set<String>> e : map.entrySet()) {
// the key is $MODULE/$PACKAGE
String key = e.getKey();
@@ -481,17 +481,18 @@
}
}
/**
- * Decodes the values of -XaddReads or -XaddExports options
+ * Decodes the values of --add-reads or --add-exports options
*
* The format of the options is: $KEY=$MODULE(,$MODULE)*
*/
private static Map<String, Set<String>> decode(String prefix) {
int index = 0;
- String value = System.getProperty(prefix + index);
+ // the system property is removed after decoding
+ String value = getAndRemoveProperty(prefix + index);
if (value == null)
return Collections.emptyMap();
Map<String, Set<String>> map = new HashMap<>();
@@ -520,16 +521,22 @@
for (String s : rhs.split(",")) {
if (s.length() > 0) values.add(s);
}
index++;
- value = System.getProperty(prefix + index);
+ value = getAndRemoveProperty(prefix + index);
}
return map;
}
+ /**
+ * Gets and remove the named system property
+ */
+ private static String getAndRemoveProperty(String key) {
+ return (String)System.getProperties().remove(key);
+ }
/**
* Throws a RuntimeException with the given message
*/
static void fail(String m) {
< prev index next >