diff --git a/bundleplugin/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java b/bundleplugin/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java
index 1307373..8b37754 100644
--- a/bundleplugin/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java
+++ b/bundleplugin/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java
@@ -391,6 +391,7 @@
         new DependencyEmbedder( embeddableArtifacts ).processHeaders( builder );
 
         dumpInstructions( "BND Instructions:", builder.getProperties(), getLog() );
+        dumpClasspath( "BND Classpath:", builder.getClasspath(), getLog() );
 
         builder.build();
         Jar jar = builder.getJar();
@@ -425,6 +426,22 @@
     }
 
 
+    protected static void dumpClasspath( String title, List classpath, Log log )
+    {
+        if ( log.isDebugEnabled() )
+        {
+            log.debug( title );
+            log.debug( "------------------------------------------------------------------------" );
+            for ( Iterator i = classpath.iterator(); i.hasNext(); )
+            {
+                File path = ((Jar)i.next()).getSource();
+                log.debug( null == path ? "null" : path.toString() );
+            }
+            log.debug( "------------------------------------------------------------------------" );
+        }
+    }
+
+
     protected static void dumpManifest( String title, Manifest manifest, Log log )
     {
         if ( log.isDebugEnabled() )
