diff --git a/framework/src/main/java/org/apache/felix/framework/BundleWiringImpl.java b/framework/src/main/java/org/apache/felix/framework/BundleWiringImpl.java
index fd508a4..f17cfbc 100644
--- a/framework/src/main/java/org/apache/felix/framework/BundleWiringImpl.java
+++ b/framework/src/main/java/org/apache/felix/framework/BundleWiringImpl.java
@@ -193,11 +193,17 @@
         // First add resolved requirements from wires.
         for (BundleWire bw : wires)
         {
-            reqList.add(bw.getRequirement());
-            if (bw.getRequirement().getNamespace().equals(BundleRevision.PACKAGE_NAMESPACE))
+            // Fragments may have multiple wires for the same requirement, so we
+            // need to check for and avoid duplicates in that case.
+            if (!bw.getRequirement().getNamespace().equals(BundleRevision.HOST_NAMESPACE)
+                || !reqList.contains(bw.getRequirement()))
             {
-                imports.add((String)
-                    bw.getCapability().getAttributes().get(BundleRevision.PACKAGE_NAMESPACE));
+                reqList.add(bw.getRequirement());
+                if (bw.getRequirement().getNamespace().equals(BundleRevision.PACKAGE_NAMESPACE))
+                {
+                    imports.add((String)
+                        bw.getCapability().getAttributes().get(BundleRevision.PACKAGE_NAMESPACE));
+                }
             }
         }
         // Next add dynamic requirements from host.
@@ -287,7 +293,6 @@
         }
         m_resolvedCaps = Collections.unmodifiableList(capList);
 
-
         List<R4Library> libList = (m_revision.getDeclaredNativeLibraries() == null)
             ? new ArrayList<R4Library>()
             : new ArrayList<R4Library>(m_revision.getDeclaredNativeLibraries());
