diff --git a/sigil/common/core/sigil.properties b/sigil/common/core/sigil.properties
index 801ce44..508cfcc 100644
--- a/sigil/common/core/sigil.properties
+++ b/sigil/common/core/sigil.properties
@@ -16,6 +16,7 @@
 	org.apache.felix.sigil.common.core*, \
 	org.apache.felix.sigil.common.model*, \
 	org.apache.felix.sigil.common.repository*, \
+	org.apache.felix.sigil.common.util*, \
 	org.apache.felix.sigil.common.progress*,
 
 -resources: \
@@ -40,8 +41,9 @@
 	org.apache.felix.sigil.common.model, \
 	org.apache.felix.sigil.common.model.eclipse, \
 	org.apache.felix.sigil.common.model.osgi, \
-	org.apache.felix.sigil.common.repository, \
 	org.apache.felix.sigil.common.progress, \
+	org.apache.felix.sigil.common.repository, \
+	org.apache.felix.sigil.common.util, \
 
 -imports: \
 	aQute.lib.osgi;resolve=compile, \
@@ -55,6 +57,7 @@
 	org.apache.felix.sigil.common.model.osgi, \
 	org.apache.felix.sigil.common.osgi, \
 	org.apache.felix.sigil.common.repository, \
+	org.apache.felix.sigil.common.util, \
 	org.osgi.framework, \
 
 header;Bundle-ActivationPolicy: lazy
diff --git a/sigil/common/core/src/org/apache/felix/sigil/common/config/BldConfig.java b/sigil/common/core/src/org/apache/felix/sigil/common/config/BldConfig.java
index f12dd4a..499af0d 100644
--- a/sigil/common/core/src/org/apache/felix/sigil/common/config/BldConfig.java
+++ b/sigil/common/core/src/org/apache/felix/sigil/common/config/BldConfig.java
@@ -29,7 +29,7 @@
 import java.util.Properties;
 import java.util.TreeMap;
 
-import org.apache.felix.sigil.common.core.util.QuoteUtil;
+import org.apache.felix.sigil.common.util.QuoteUtil;
 
 public class BldConfig
 {
diff --git a/sigil/common/core/src/org/apache/felix/sigil/common/core/internal/model/eclipse/SigilBundle.java b/sigil/common/core/src/org/apache/felix/sigil/common/core/internal/model/eclipse/SigilBundle.java
index cd6b3f6..11d7053 100644
--- a/sigil/common/core/src/org/apache/felix/sigil/common/core/internal/model/eclipse/SigilBundle.java
+++ b/sigil/common/core/src/org/apache/felix/sigil/common/core/internal/model/eclipse/SigilBundle.java
@@ -36,7 +36,6 @@
 
 import org.apache.felix.sigil.common.config.Resource;
 import org.apache.felix.sigil.common.core.BldCore;
-import org.apache.felix.sigil.common.core.util.ManifestUtil;
 import org.apache.felix.sigil.common.model.AbstractCompoundModelElement;
 import org.apache.felix.sigil.common.model.eclipse.IBundleCapability;
 import org.apache.felix.sigil.common.model.eclipse.ISigilBundle;
@@ -44,6 +43,7 @@
 import org.apache.felix.sigil.common.model.osgi.IPackageExport;
 import org.apache.felix.sigil.common.model.osgi.IPackageImport;
 import org.apache.felix.sigil.common.progress.IProgress;
+import org.apache.felix.sigil.common.util.ManifestUtil;
 import org.osgi.framework.Version;
 
 /**
@@ -115,10 +115,10 @@
     {
         if (location != null && location.exists())
         {
-            JarFile f = new JarFile(location);
+            JarFile f = new JarFile(location, false);
             try
             {
-                setBundleInfo(ManifestUtil.buildBundleModelElement(f.getManifest()));
+                setBundleInfo(ManifestUtil.buildBundleModelElement(f));
             }
             finally
             {
diff --git a/sigil/common/core/src/org/apache/felix/sigil/common/core/repository/DirectoryHelper.java b/sigil/common/core/src/org/apache/felix/sigil/common/core/repository/DirectoryHelper.java
index 4eaaea1..ec6179d 100644
--- a/sigil/common/core/src/org/apache/felix/sigil/common/core/repository/DirectoryHelper.java
+++ b/sigil/common/core/src/org/apache/felix/sigil/common/core/repository/DirectoryHelper.java
@@ -23,7 +23,6 @@
 import java.io.IOException;
 import java.util.List;
 import java.util.jar.JarFile;
-import java.util.jar.Manifest;
 
 import org.apache.felix.sigil.common.core.BldCore;
 import org.apache.felix.sigil.common.model.ModelElementFactory;
@@ -31,6 +30,7 @@
 import org.apache.felix.sigil.common.model.eclipse.ISigilBundle;
 import org.apache.felix.sigil.common.model.osgi.IBundleModelElement;
 import org.apache.felix.sigil.common.repository.AbstractBundleRepository;
+import org.apache.felix.sigil.common.util.ManifestUtil;
 
 public class DirectoryHelper
 {
@@ -54,7 +54,7 @@
                     try
                     {
                         jar = new JarFile(f, false);
-                        ISigilBundle bundle = buildBundle(repository, jar.getManifest(),
+                        ISigilBundle bundle = buildBundle(repository, jar,
                             f);
                         if (bundle != null)
                         {
@@ -96,9 +96,9 @@
     }
 
     private static ISigilBundle buildBundle(AbstractBundleRepository repository,
-        Manifest manifest, File f)
+        JarFile jar, File f) throws IOException
     {
-        IBundleModelElement info = repository.buildBundleModelElement(manifest);
+        IBundleModelElement info = ManifestUtil.buildBundleModelElement(jar);
 
         ISigilBundle bundle = null;
 
diff --git a/sigil/common/core/src/org/apache/felix/sigil/common/core/repository/SystemRepository.java b/sigil/common/core/src/org/apache/felix/sigil/common/core/repository/SystemRepository.java
index cfd0b77..6796b45 100644
--- a/sigil/common/core/src/org/apache/felix/sigil/common/core/repository/SystemRepository.java
+++ b/sigil/common/core/src/org/apache/felix/sigil/common/core/repository/SystemRepository.java
@@ -31,6 +31,7 @@
 import org.apache.felix.sigil.common.model.osgi.IPackageExport;
 import org.apache.felix.sigil.common.repository.AbstractBundleRepository;
 import org.apache.felix.sigil.common.repository.IRepositoryVisitor;
+import org.apache.felix.sigil.common.util.ManifestUtil;
 
 public class SystemRepository extends AbstractBundleRepository
 {
@@ -73,8 +74,8 @@
                 if (frameworkPath != null)
                 {
                     systemBundle.setLocation(frameworkPath);
-                    jar = new JarFile(frameworkPath);
-                    info = buildBundleModelElement(jar.getManifest());
+                    jar = new JarFile(frameworkPath,false);
+                    info = ManifestUtil.buildBundleModelElement(jar);
                 }
                 else
                 {
diff --git a/sigil/common/core/src/org/apache/felix/sigil/common/repository/AbstractBundleRepository.java b/sigil/common/core/src/org/apache/felix/sigil/common/repository/AbstractBundleRepository.java
index c55e73b..d0d1e80 100644
--- a/sigil/common/core/src/org/apache/felix/sigil/common/repository/AbstractBundleRepository.java
+++ b/sigil/common/core/src/org/apache/felix/sigil/common/repository/AbstractBundleRepository.java
@@ -24,12 +24,10 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashSet;
-import java.util.jar.Manifest;
 
 import org.apache.felix.sigil.common.core.BldCore;
 import org.apache.felix.sigil.common.core.licence.ILicenseManager;
 import org.apache.felix.sigil.common.core.licence.ILicensePolicy;
-import org.apache.felix.sigil.common.core.util.ManifestUtil;
 import org.apache.felix.sigil.common.model.IModelElement;
 import org.apache.felix.sigil.common.model.eclipse.ILibrary;
 import org.apache.felix.sigil.common.model.eclipse.ISigilBundle;
@@ -257,11 +255,6 @@
         return found.isEmpty() ? null : found.iterator().next();
     }
 
-    public IBundleModelElement buildBundleModelElement(Manifest mf)
-    {
-        return ManifestUtil.buildBundleModelElement(mf);
-    }
-
     protected ILicensePolicy findPolicy(IModelElement elem)
     {
         ILicenseManager man = BldCore.getLicenseManager();
diff --git a/sigil/common/core/src/org/apache/felix/sigil/common/core/util/ManifestUtil.java b/sigil/common/core/src/org/apache/felix/sigil/common/util/ManifestUtil.java
similarity index 88%
rename from sigil/common/core/src/org/apache/felix/sigil/common/core/util/ManifestUtil.java
rename to sigil/common/core/src/org/apache/felix/sigil/common/util/ManifestUtil.java
index 750c426..9048a77 100644
--- a/sigil/common/core/src/org/apache/felix/sigil/common/core/util/ManifestUtil.java
+++ b/sigil/common/core/src/org/apache/felix/sigil/common/util/ManifestUtil.java
@@ -1,9 +1,13 @@
-package org.apache.felix.sigil.common.core.util;
+package org.apache.felix.sigil.common.util;
 
+import java.io.IOException;
+import java.io.InputStream;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.jar.Attributes;
 import java.util.jar.Manifest;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
 
 import org.apache.felix.sigil.common.core.BldCore;
 import org.apache.felix.sigil.common.model.ModelElementFactory;
@@ -18,10 +22,34 @@
 
 public class ManifestUtil
 {
-    public static IBundleModelElement buildBundleModelElement(Manifest mf)
-    {
+    /**
+     * Use this utility to read Manifest from a JarFile or ZipFile
+     * due to http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6735255
+     * 
+     * @param zip
+     * @return
+     * @throws IOException
+     */
+    public static Manifest getManifest(ZipFile zip) throws IOException {
+        ZipEntry entry = zip.getEntry("META-INF/MANIFEST.MF");
+        if ( entry == null ) return null;
+        
+        InputStream in = zip.getInputStream(entry);
+        try {
+            return new Manifest(in);
+        }
+        finally {
+            // explicitly close due to 
+            // http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6735255
+            in.close();
+        }
+    }
+    
+    public static IBundleModelElement buildBundleModelElement(ZipFile zip) throws IOException {
         IBundleModelElement info = null;
 
+        Manifest mf = getManifest(zip);
+        
         if (mf != null)
         {
             Attributes attrs = mf.getMainAttributes();
diff --git a/sigil/common/core/src/org/apache/felix/sigil/common/core/util/QuoteUtil.java b/sigil/common/core/src/org/apache/felix/sigil/common/util/QuoteUtil.java
similarity index 97%
rename from sigil/common/core/src/org/apache/felix/sigil/common/core/util/QuoteUtil.java
rename to sigil/common/core/src/org/apache/felix/sigil/common/util/QuoteUtil.java
index dc88889..4bab43e 100644
--- a/sigil/common/core/src/org/apache/felix/sigil/common/core/util/QuoteUtil.java
+++ b/sigil/common/core/src/org/apache/felix/sigil/common/util/QuoteUtil.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.felix.sigil.common.core.util;
+package org.apache.felix.sigil.common.util;
 
 import java.util.ArrayList;
 
diff --git a/sigil/eclipse/core/sigil.properties b/sigil/eclipse/core/sigil.properties
index e9689e1..42e5b89 100644
--- a/sigil/eclipse/core/sigil.properties
+++ b/sigil/eclipse/core/sigil.properties
@@ -38,8 +38,9 @@
 	org.apache.felix.sigil.common.model.eclipse, \
 	org.apache.felix.sigil.common.model.osgi, \
 	org.apache.felix.sigil.common.osgi, \
-	org.apache.felix.sigil.common.progress;version=0.9.0, \
+	org.apache.felix.sigil.common.progress, \
 	org.apache.felix.sigil.common.repository, \
+	org.apache.felix.sigil.common.util, \
 	org.apache.felix.sigil.eclipse, \
 	org.apache.felix.sigil.eclipse.install, \
 	org.apache.felix.sigil.eclipse.job, \
diff --git a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/repository/eclipse/OSGiInstallRepository.java b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/repository/eclipse/OSGiInstallRepository.java
index 79c4f12..c479fa2 100644
--- a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/repository/eclipse/OSGiInstallRepository.java
+++ b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/repository/eclipse/OSGiInstallRepository.java
@@ -26,7 +26,6 @@
 import java.util.List;
 import java.util.Map;
 import java.util.jar.JarFile;
-import java.util.jar.Manifest;
 
 import org.apache.felix.sigil.common.core.BldCore;
 import org.apache.felix.sigil.common.model.ModelElementFactory;
@@ -35,6 +34,7 @@
 import org.apache.felix.sigil.common.model.osgi.IBundleModelElement;
 import org.apache.felix.sigil.common.repository.AbstractBundleRepository;
 import org.apache.felix.sigil.common.repository.IRepositoryVisitor;
+import org.apache.felix.sigil.common.util.ManifestUtil;
 import org.apache.felix.sigil.eclipse.SigilCore;
 import org.apache.felix.sigil.eclipse.install.IOSGiInstall;
 import org.eclipse.core.runtime.IPath;
@@ -106,8 +106,8 @@
         JarFile jar = null;
         try
         {
-            jar = new JarFile(f);
-            ISigilBundle bundle = buildBundle(jar.getManifest(), f);
+            jar = new JarFile(f, false);
+            ISigilBundle bundle = buildBundle(jar, f);
             if (bundle != null)
             {
                 bundle.setLocation(f);
@@ -145,9 +145,9 @@
         }
     }
 
-    private ISigilBundle buildBundle(Manifest manifest, File f)
+    private ISigilBundle buildBundle(JarFile jar, File f) throws IOException
     {
-        IBundleModelElement info = buildBundleModelElement(manifest);
+        IBundleModelElement info = ManifestUtil.buildBundleModelElement(jar);
 
         ISigilBundle bundle = null;
 
