diff --git a/platform/core-impl/src/com/intellij/ide/plugins/PluginManagerCore.java b/platform/core-impl/src/com/intellij/ide/plugins/PluginManagerCore.java index 98c45d5d9550..cdfc4921ee33 100644 --- a/platform/core-impl/src/com/intellij/ide/plugins/PluginManagerCore.java +++ b/platform/core-impl/src/com/intellij/ide/plugins/PluginManagerCore.java @@ -15,6 +15,7 @@ */ package com.intellij.ide.plugins; +import com.intellij.diagnostic.PluginException; import com.intellij.ide.ClassUtilCore; import com.intellij.ide.IdeBundle; import com.intellij.ide.StartupProgress; @@ -25,6 +26,7 @@ import com.intellij.openapi.application.PathManager; import com.intellij.openapi.components.ExtensionAreas; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.extensions.*; +import com.intellij.openapi.extensions.impl.PicoPluginExtensionInitializationException; import com.intellij.openapi.util.BuildNumber; import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.Couple; @@ -1363,6 +1365,9 @@ public class PluginManagerCore { try { initializePlugins(progress); } + catch (PicoPluginExtensionInitializationException e) { + throw new PluginException(e, e.getPluginId()); + } catch (RuntimeException e) { getLogger().error(e); throw e; @@ -1407,4 +1412,4 @@ public class PluginManagerCore { getLogger().info(t); } } -} \ No newline at end of file +} diff --git a/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.java b/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.java index fcb6e74a2cb4..9bc711b04228 100644 --- a/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.java +++ b/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.java @@ -277,13 +277,13 @@ public class ExtensionsAreaImpl implements ExtensionsArea { @NotNull PluginDescriptor descriptor, @NotNull ExtensionPoint.Kind kind) { if (hasExtensionPoint(extensionPointName)) { + final String message = + "Duplicate registration for EP: " + extensionPointName + ": original plugin " + getExtensionPoint(extensionPointName).getDescriptor().getPluginId() + + ", new plugin " + descriptor.getPluginId(); if (DEBUG_REGISTRATION) { - final ExtensionPointImpl oldEP = getExtensionPoint(extensionPointName); - myLogger.error("Duplicate registration for EP: " + extensionPointName + ": original plugin " + oldEP.getDescriptor().getPluginId() + - ", new plugin " + descriptor.getPluginId(), - myEPTraces.get(extensionPointName)); + myLogger.error(message, myEPTraces.get(extensionPointName)); } - throw new RuntimeException("Duplicate registration for EP: " + extensionPointName); + throw new PicoPluginExtensionInitializationException(message, null, descriptor.getPluginId()); } registerExtensionPoint(new ExtensionPointImpl(extensionPointName, extensionPointBeanClass, kind, this, myAreaInstance, descriptor));