From f0c3782329ce4cfba195e0f8ee0c77dd3dea824b Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 31 Mar 2010 18:45:00 +0400 Subject: [PATCH] IDEA-53435 ClassNotFoundException when launching a groovy script located in module with imported groovy library --- .../plugins/groovy/util/LibrariesUtil.java | 32 +++++++++++++------ 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/util/LibrariesUtil.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/util/LibrariesUtil.java index 16dd55f623d8..7979fdb8ded0 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/util/LibrariesUtil.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/util/LibrariesUtil.java @@ -50,22 +50,34 @@ public class LibrariesUtil { final ArrayList libraries = new ArrayList(); ApplicationManager.getApplication().runReadAction(new Runnable() { public void run() { - ModuleRootManager manager = ModuleRootManager.getInstance(module); - for (OrderEntry entry : manager.getOrderEntries()) { - if (entry instanceof LibraryOrderEntry) { - LibraryOrderEntry libEntry = (LibraryOrderEntry)entry; - Library library = libEntry.getLibrary(); - if (condition.value(library)) { - libraries.add(library); - } - } - } + populateOrderEntries(module, condition, libraries, false); } }); return libraries.toArray(new Library[libraries.size()]); } + private static void populateOrderEntries(Module module, Condition condition, ArrayList libraries, boolean exportedOnly) { + for (OrderEntry entry : ModuleRootManager.getInstance(module).getOrderEntries()) { + if (entry instanceof LibraryOrderEntry) { + LibraryOrderEntry libEntry = (LibraryOrderEntry)entry; + if (exportedOnly && !libEntry.isExported()) { + continue; + } + + Library library = libEntry.getLibrary(); + if (condition.value(library)) { + libraries.add(library); + } + } else if (entry instanceof ModuleOrderEntry) { + final Module dep = ((ModuleOrderEntry)entry).getModule(); + if (module != null) { + populateOrderEntries(dep, condition, libraries, true); + } + } + } + } + public static Library[] getGlobalLibraries(Condition condition) { LibraryTable table = LibraryTablesRegistrar.getInstance().getLibraryTable(); List libs = ContainerUtil.findAll(table.getLibraries(), condition);