diff --git a/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/handlers/CreateConfigureDialogHandler.java b/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/handlers/CreateConfigureDialogHandler.java
index 4b386bf..4819a73 100644
--- a/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/handlers/CreateConfigureDialogHandler.java
+++ b/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/handlers/CreateConfigureDialogHandler.java
@@ -43,7 +43,12 @@
         }
         Class<? extends Dialog> clazz;
         try {
-            clazz = (Class<? extends Dialog>) ext.loadClass(clazzName);
+            try {
+                clazz = (Class<? extends Dialog>) ext.loadClass(clazzName);
+            } catch (ClassNotFoundException e) {
+                // If the contributing bundle's classloader can't find the class, try our own.
+                clazz = (Class<? extends Dialog>) getClass().getClassLoader().loadClass(clazzName);
+            }
             Dialog object = ContextInjectionFactory.make(clazz, child);
             return object;
         } catch (Exception e) {
diff --git a/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/handlers/CreateReportProcessorHandler.java b/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/handlers/CreateReportProcessorHandler.java
index 66a75f8..83f6381 100644
--- a/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/handlers/CreateReportProcessorHandler.java
+++ b/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/handlers/CreateReportProcessorHandler.java
@@ -24,7 +24,13 @@
     public ReportProcessorSafeWrapper execute(String providerClass, IEclipseContext context, String contributor) {
         Bundle ext = Platform.getBundle(contributor);
         try {
-            Class<? extends IReportProcessor> clazz = (Class<? extends IReportProcessor>) ext.loadClass(providerClass);
+            Class<? extends IReportProcessor> clazz;
+            try {
+                clazz = (Class<? extends IReportProcessor>) ext.loadClass(providerClass);
+            } catch (ClassNotFoundException e) {
+                // If the contributing bundle's classloader can't find the class, try our own.
+                clazz = (Class<? extends IReportProcessor>) getClass().getClassLoader().loadClass(providerClass);
+            }
             IReportProcessor reportProcessor = ContextInjectionFactory.make(clazz, context);
             if (reportProcessor instanceof IEditableReportProcessor) {
                 return new EditableReportProcessorSafeWrapper((IEditableReportProcessor) reportProcessor);
diff --git a/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/handlers/CreateServerConnectionHandler.java b/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/handlers/CreateServerConnectionHandler.java
index 5cce75b..20a9a0c 100644
--- a/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/handlers/CreateServerConnectionHandler.java
+++ b/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/handlers/CreateServerConnectionHandler.java
@@ -25,7 +25,13 @@
         Bundle ext = Platform.getBundle(contributor);
         String clazzName = server.getClazz();
         try {
-            Class<? extends IServerConnection> clazz = (Class<? extends IServerConnection>) ext.loadClass(clazzName);
+            Class<? extends IServerConnection> clazz;
+            try {
+                clazz = (Class<? extends IServerConnection>) ext.loadClass(clazzName);
+            } catch (ClassNotFoundException e) {
+                // If the contributing bundle's classloader can't find the class, try our own.
+                clazz = (Class<? extends IServerConnection>) getClass().getClassLoader().loadClass(clazzName);
+            }
             IServerConnection object = ContextInjectionFactory.make(clazz, context);
             server.setConnection(object);
             return object;
