From 01d4250084b60415bd2b9f06ea0d34f80a576148 Mon Sep 17 00:00:00 2001 From: Nikolay Chashnikov Date: Tue, 18 Mar 2025 21:26:01 +0300 Subject: [PATCH] [remote dev] don't remove JARs of embedded modules from the plugin main module's classpath (IJPL-179421) Otherwise, if an embedded module is included in the same JAR file as the main plugin module, it'll be removed from the classpath, and the plugin will fail to load. GitOrigin-RevId: bcf1e54fcb088749da4be35ae192304c677c032b --- .../platform/bootstrap/ModuleBasedProductLoadingStrategy.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/platform/bootstrap/src/com/intellij/platform/bootstrap/ModuleBasedProductLoadingStrategy.kt b/platform/bootstrap/src/com/intellij/platform/bootstrap/ModuleBasedProductLoadingStrategy.kt index 7be42a89fd04..69c0947e3e15 100644 --- a/platform/bootstrap/src/com/intellij/platform/bootstrap/ModuleBasedProductLoadingStrategy.kt +++ b/platform/bootstrap/src/com/intellij/platform/bootstrap/ModuleBasedProductLoadingStrategy.kt @@ -259,7 +259,10 @@ internal class ModuleBasedProductLoadingStrategy(internal val moduleRepository: val pluginDir = pluginDir ?: mainResourceRoot.parent.parent loadDescriptorFromJar(mainResourceRoot, context, zipFilePool, pathResolver, isBundled = isBundled, pluginDir = pluginDir) } - val modulesWithJarFiles = descriptor?.content?.modules?.flatMap { it.requireDescriptor().jarFiles ?: emptyList() } + val modulesWithJarFiles = descriptor?.content?.modules?.flatMap { moduleItem -> + val jarFiles = moduleItem.requireDescriptor().jarFiles + if (moduleItem.loadingRule != ModuleLoadingRule.EMBEDDED && jarFiles != null) jarFiles else emptyList() + } descriptor?.jarFiles = allResourceRootsList.filter { modulesWithJarFiles == null || it !in modulesWithJarFiles } return descriptor }