diff --git a/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/helper/ClassScanner.java b/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/helper/ClassScanner.java
index f36420c..f2dcebc 100644
--- a/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/helper/ClassScanner.java
+++ b/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/helper/ClassScanner.java
@@ -397,7 +397,13 @@
                             final List<ClassDescription> c =  this.parseServiceComponentDescriptor( scrInfoFile, artifact.toString() + ':' + ABSTRACT_DESCRIPTOR_ARCHIV_PATH);
                             if ( c != null ) {
                                 for(final ClassDescription cd : c) {
-                                    loadedDependencies.put(cd.getDescribedClass().getName(), cd);
+                                    final String name;
+                                    if ( cd.getDescribedClass() == null ) {
+                                        name = cd.getDescription(ComponentDescription.class).getName();
+                                    } else {
+                                        name = cd.getDescribedClass().getName();
+                                    }
+                                    loadedDependencies.put(name, cd);
                                 }
                             }
                             continue;
@@ -426,7 +432,13 @@
                                     final List<ClassDescription> c = this.readServiceComponentDescriptor( artifact, entry );
                                     if ( c != null ) {
                                         for(final ClassDescription cd : c) {
-                                            loadedDependencies.put(cd.getDescribedClass().getName(), cd);
+                                            final String name;
+                                            if ( cd.getDescribedClass() == null ) {
+                                                name = cd.getDescription(ComponentDescription.class).getName();
+                                            } else {
+                                                name = cd.getDescribedClass().getName();
+                                            }
+                                            loadedDependencies.put(name, cd);
                                         }
                                     }
                                 }
