--- old/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/ImagePluginStack.java 2016-08-25 19:26:37.097692400 +0530 +++ new/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/ImagePluginStack.java 2016-08-25 19:26:36.317691300 +0530 @@ -172,7 +172,7 @@ private final Plugin lastSorter; private final List plugins = new ArrayList<>(); private final List resourcePrevisitors = new ArrayList<>(); - + private final Set rootModules; public ImagePluginStack() { this(null, Collections.emptyList(), null); @@ -181,6 +181,13 @@ public ImagePluginStack(ImageBuilder imageBuilder, List plugins, Plugin lastSorter) { + this(imageBuilder, plugins, lastSorter, null); + } + + public ImagePluginStack(ImageBuilder imageBuilder, + List plugins, + Plugin lastSorter, + Set rootModules) { this.imageBuilder = Objects.requireNonNull(imageBuilder); this.lastSorter = lastSorter; this.plugins.addAll(Objects.requireNonNull(plugins)); @@ -190,6 +197,7 @@ resourcePrevisitors.add((ResourcePrevisitor) p); } }); + this.rootModules = rootModules; } public void operate(ImageProvider provider) throws Exception { @@ -268,6 +276,7 @@ frozenOrder = ((OrderedResourcePoolManager.OrderedResourcePool)resPool).getOrderedList(); } } + return resPool; } @@ -458,7 +467,11 @@ throws Exception { Objects.requireNonNull(original); Objects.requireNonNull(transformed); - imageBuilder.storeFiles(new LastPoolManager(transformed).resourcePool()); + ResourcePool lastPool = new LastPoolManager(transformed).resourcePool(); + if (rootModules != null) { + ResourcePoolConfiguration.validate(lastPool, rootModules); + } + imageBuilder.storeFiles(lastPool); } public ExecutableImage getExecutableImage() throws IOException {