< prev index next >

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

Print this page

        

@@ -28,10 +28,12 @@
 import jdk.tools.jlink.plugin.ResourcePoolEntry;
 import jdk.tools.jlink.plugin.ResourcePoolModule;
 import jdk.tools.jlink.plugin.ResourcePoolModuleView;
 
 import java.lang.module.ModuleDescriptor;
+import java.lang.module.ModuleDescriptor.Requires.Modifier;
+
 import java.nio.ByteBuffer;
 import java.util.Deque;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.LinkedList;

@@ -65,17 +67,18 @@
         return ModuleDescriptor.read(bb);
     }
 
     private ModuleSorter addModule(ResourcePoolModule module) {
         addNode(module);
-        readModuleDescriptor(module).requires().stream()
-            .forEach(req -> {
-                String dm = req.name();
-                ResourcePoolModule dep = moduleView.findModule(dm)
-                    .orElseThrow(() -> new PluginException(dm + " not found"));
+        readModuleDescriptor(module).requires().stream().forEach(req -> {
+            ResourcePoolModule dep = moduleView.findModule(req.name()).orElse(null);
+            if (dep != null) {
                 addNode(dep);
                 edges.get(module.name()).add(dep);
+            } else if (!req.modifiers().contains(Modifier.STATIC)) {
+                throw new PluginException(req.name() + " not found");
+            }
             });
         return this;
     }
 
     private void addNode(ResourcePoolModule module) {
< prev index next >