diff --git a/org.apache.felix.framework/src/main/java/org/apache/felix/framework/searchpolicy/R4SearchPolicyCore.java b/org.apache.felix.framework/src/main/java/org/apache/felix/framework/searchpolicy/R4SearchPolicyCore.java
index e6d0d83..f754b75 100755
--- a/org.apache.felix.framework/src/main/java/org/apache/felix/framework/searchpolicy/R4SearchPolicyCore.java
+++ b/org.apache.felix.framework/src/main/java/org/apache/felix/framework/searchpolicy/R4SearchPolicyCore.java
@@ -275,13 +275,13 @@
         // these packages cannot be provided by other bundles.
         if (pkgName.startsWith("java."))
         {
-            return this.getClass().getClassLoader().loadClass(name);
+            return getClass().getClassLoader().loadClass(name);
         }
 
         // Look in the module's imports.
         Class clazz = findImportedClass(module, name, pkgName);
 
-        // If not found, try the module's own content.
+        // If not found, try the module's own class path.
         if (clazz == null)
         {
             clazz = module.getContentLoader().getClass(name);
@@ -404,9 +404,16 @@
         }
         catch (ResolveException ex)
         {
-            // We do not use the resolve exception as the
-            // cause of the exception, since this would
-            // potentially leak internal module information.
+            // The spec states that if the bundle cannot be resolved, then
+            // only the local bundle's resources should be searched. So we
+            // will ask the module's own class path.
+            URL url = module.getContentLoader().getResource(name);
+            if (url != null)
+            {
+                return url;
+            }
+
+            // We need to throw a resource not found exception.
             throw new ResourceNotFoundException(
                 name + ": cannot resolve package "
                 + ex.getPackage());
@@ -419,13 +426,13 @@
         // these packages cannot be provided by other bundles.
         if (pkgName.startsWith("java."))
         {
-            return this.getClass().getClassLoader().getResource(name);
+            return getClass().getClassLoader().getResource(name);
         }
 
         // Look in the module's imports.
         URL url = findImportedResource(module, name);
 
-        // If not found, try the module's own content.
+        // If not found, try the module's own class path.
         if (url == null)
         {
             url = module.getContentLoader().getResource(name);
