< prev index next >
src/java.base/share/classes/jdk/internal/module/ModuleBootstrap.java
Print this page
rev 16338 : 8171400: Move checking of duplicate packages in the boot layer to link time
Reviewed-by: alanb
@@ -306,10 +306,27 @@
fail(name + ": cannot be loaded from application module path");
}
}
}
+ // if needed check that there are no split packages in the set of
+ // resolved modules for the boot layer
+ if (SystemModules.hasSplitPackages() || needPostResolutionChecks) {
+ Map<String, String> packageToModule = new HashMap<>();
+ for (ResolvedModule resolvedModule : cf.modules()) {
+ ModuleDescriptor descriptor =
+ resolvedModule.reference().descriptor();
+ String name = descriptor.name();
+ for (String p : descriptor.packages()) {
+ String other = packageToModule.putIfAbsent(p, name);
+ if (other != null) {
+ fail("Package " + p + " in both module "
+ + name + " and module " + other);
+ }
+ }
+ }
+ }
long t4 = System.nanoTime();
// define modules to VM/runtime
Layer bootLayer = Layer.empty().defineModules(cf, clf);
< prev index next >