diff --git a/kernel/org.eclipse.virgo.kernel.equinox.extensions/src/main/java/org/eclipse/virgo/kernel/equinox/extensions/hooks/BundleFileWrapper.java b/kernel/org.eclipse.virgo.kernel.equinox.extensions/src/main/java/org/eclipse/virgo/kernel/equinox/extensions/hooks/BundleFileWrapper.java
index c8c53f5..18aa19b 100644
--- a/kernel/org.eclipse.virgo.kernel.equinox.extensions/src/main/java/org/eclipse/virgo/kernel/equinox/extensions/hooks/BundleFileWrapper.java
+++ b/kernel/org.eclipse.virgo.kernel.equinox.extensions/src/main/java/org/eclipse/virgo/kernel/equinox/extensions/hooks/BundleFileWrapper.java
@@ -15,7 +15,7 @@
 
 /**
  * A <code>BundleFileWrapper</code> implementation can be plugged into the {@link PluggableBundleFileWrapperFactoryHook}
- * at runtime. It will be called to wrap each {@BundleFile BundleFile} that is subsequently accessed by
+ * at runtime. It will be called to wrap each {@link BundleFile BundleFile} that is subsequently accessed by
  * Equinox.<p />
  * 
  * <strong>Concurrent Semantics</strong><br /> Implementations <strong>must</strong> be thread-safe.
diff --git a/kernel/org.eclipse.virgo.kernel.equinox.extensions/src/main/java/org/eclipse/virgo/kernel/equinox/extensions/hooks/ExtendedBundleFileWrapperFactoryHook.java b/kernel/org.eclipse.virgo.kernel.equinox.extensions/src/main/java/org/eclipse/virgo/kernel/equinox/extensions/hooks/ExtendedBundleFileWrapperFactoryHook.java
index ca5c798..b6c2df9 100644
--- a/kernel/org.eclipse.virgo.kernel.equinox.extensions/src/main/java/org/eclipse/virgo/kernel/equinox/extensions/hooks/ExtendedBundleFileWrapperFactoryHook.java
+++ b/kernel/org.eclipse.virgo.kernel.equinox.extensions/src/main/java/org/eclipse/virgo/kernel/equinox/extensions/hooks/ExtendedBundleFileWrapperFactoryHook.java
@@ -38,7 +38,7 @@
     /**
      * {@inheritDoc}
      */
-    public BundleFile wrapBundleFile(BundleFile bundleFile, Object content, BaseData data, boolean base) throws IOException {
+    public BundleFile wrapBundleFile(BundleFile bundleFile, Object content, BaseData data, boolean base) {
         return new FileResourceEnforcingBundleFile(bundleFile);
     }
 
@@ -80,8 +80,7 @@
          */
         @Override
         public BundleEntry getEntry(String path) {
-            BundleEntry entry = this.bundleFile.getEntry(path);
-            return entry;
+            return this.bundleFile.getEntry(path);
         }
 
         /**
@@ -89,8 +88,7 @@
          */
         @Override
         public Enumeration<String> getEntryPaths(String path) {
-            Enumeration<String> paths = this.bundleFile.getEntryPaths(path);
-            return paths;
+            return this.bundleFile.getEntryPaths(path);
         }
 
         /**
@@ -163,7 +161,7 @@
                 connection = url.openConnection();
                 connection.setDefaultUseCaches(false);
                 connection.setUseCaches(false);
-            } catch (Exception e) {
+            } catch (Exception ignored) {
                 
             }
             if (!"jar".equals(url.getProtocol()) || doesJarEntryReallyExist(connection)) {
@@ -177,7 +175,7 @@
             boolean entryExists = false;
             JarFile jarFile = null;
             try {
-                if (connection != null && connection instanceof JarURLConnection) {
+                if (connection instanceof JarURLConnection) {
                     JarURLConnection jarURLConnection = (JarURLConnection) connection;
                     jarFile = jarURLConnection.getJarFile();
                     String entryName = jarURLConnection.getEntryName();
@@ -185,8 +183,7 @@
                     	entryExists = true;
                     }
                 }
-            } catch (IOException ioe) {
-                entryExists = false;
+            } catch (IOException ignored) {
             } finally {
             	if (jarFile != null) {
             		try {
diff --git a/kernel/org.eclipse.virgo.kernel.equinox.extensions/src/main/java/org/eclipse/virgo/kernel/equinox/extensions/hooks/PluggableBundleFileWrapperFactoryHook.java b/kernel/org.eclipse.virgo.kernel.equinox.extensions/src/main/java/org/eclipse/virgo/kernel/equinox/extensions/hooks/PluggableBundleFileWrapperFactoryHook.java
index 500dc65..1f6bec4 100644
--- a/kernel/org.eclipse.virgo.kernel.equinox.extensions/src/main/java/org/eclipse/virgo/kernel/equinox/extensions/hooks/PluggableBundleFileWrapperFactoryHook.java
+++ b/kernel/org.eclipse.virgo.kernel.equinox.extensions/src/main/java/org/eclipse/virgo/kernel/equinox/extensions/hooks/PluggableBundleFileWrapperFactoryHook.java
@@ -11,8 +11,6 @@
 
 package org.eclipse.virgo.kernel.equinox.extensions.hooks;
 
-import java.io.IOException;
-
 import org.eclipse.osgi.baseadaptor.BaseData;
 import org.eclipse.osgi.baseadaptor.bundlefile.BundleFile;
 import org.eclipse.osgi.baseadaptor.hooks.BundleFileWrapperFactoryHook;
@@ -48,7 +46,7 @@
     /** 
      * {@inheritDoc}
      */
-    public BundleFile wrapBundleFile(BundleFile bundleFile, Object content, BaseData data, boolean base) throws IOException {
+    public BundleFile wrapBundleFile(BundleFile bundleFile, Object content, BaseData data, boolean base) {
         synchronized(this.monitor) {
             if (wrapper != null) {
                 return wrapper.wrapBundleFile(bundleFile);
diff --git a/kernel/org.eclipse.virgo.kernel.userregion/src/main/java/org/eclipse/virgo/kernel/userregion/internal/equinox/EquinoxHookRegistrar.java b/kernel/org.eclipse.virgo.kernel.userregion/src/main/java/org/eclipse/virgo/kernel/userregion/internal/equinox/EquinoxHookRegistrar.java
index 0bd099f..0ce73b8 100644
--- a/kernel/org.eclipse.virgo.kernel.userregion/src/main/java/org/eclipse/virgo/kernel/userregion/internal/equinox/EquinoxHookRegistrar.java
+++ b/kernel/org.eclipse.virgo.kernel.userregion/src/main/java/org/eclipse/virgo/kernel/userregion/internal/equinox/EquinoxHookRegistrar.java
@@ -44,7 +44,7 @@
         PluggableDelegatingClassLoaderDelegateHook.getInstance().addDelegate(this.metaInfResourceClassLoaderDelegateHook);
     }
     
-    public void destroy() throws Exception {
+    public void destroy() {
         PluggableClassLoadingHook.getInstance().setClassLoaderCreator(null);
         PluggableBundleFileWrapperFactoryHook.getInstance().setBundleFileWrapper(null);
         PluggableDelegatingClassLoaderDelegateHook.getInstance().removeDelegate(this.metaInfResourceClassLoaderDelegateHook);
