diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/ZipArchive.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/ZipArchive.java
index 6bbc9dd..41e6e9c 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/ZipArchive.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/ZipArchive.java
@@ -25,6 +25,7 @@
 import java.util.Enumeration;
 import java.util.LinkedHashMap;
 import java.util.Map;
+import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
 import java.util.zip.ZipEntry;
 
@@ -104,9 +105,9 @@
         root = new EntryImpl("", true);
         inf = new DefaultMetaInf();
 
-        Enumeration e = jar.entries();
+        Enumeration<JarEntry> e = jar.entries();
         while (e.hasMoreElements()) {
-            ZipEntry entry = (ZipEntry) e.nextElement();
+            ZipEntry entry = e.nextElement();
             String path = entry.getName();
             // check for meta inf
             if (path.startsWith(Constants.META_DIR + "/")) {
diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/InstallHookProcessorImpl.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/InstallHookProcessorImpl.java
index fb497fd..d5cc7eb 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/InstallHookProcessorImpl.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/InstallHookProcessorImpl.java
@@ -85,7 +85,7 @@
             // currently only the format: "installhook.{name}.class" is supported
             Properties props = archive.getMetaInf().getProperties();
             if (props != null) {
-                Enumeration names = props.propertyNames();
+                Enumeration<?> names = props.propertyNames();
                 while (names.hasMoreElements()) {
                     String name = names.nextElement().toString();
                     if (name.startsWith(VaultPackage.PREFIX_INSTALL_HOOK)) {
@@ -248,7 +248,7 @@
             log.info("Loading Hook {}: Main-Class = {}", name, mainClassName);
 
             // find main class
-            Class clazz = classLoader.loadClass(mainClassName);
+            Class<?> clazz = classLoader.loadClass(mainClassName);
             if (!InstallHook.class.isAssignableFrom(clazz)) {
                 throw new PackageException("hook's main class " + mainClassName + " does not implement the InstallHook interface: " + name);
             }
diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/ZipVaultPackage.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/ZipVaultPackage.java
index 12e9b01..e6ad38e 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/ZipVaultPackage.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/ZipVaultPackage.java
@@ -19,7 +19,6 @@
 
 import java.io.File;
 import java.io.IOException;
-import java.util.LinkedList;
 import java.util.List;
 import java.util.Properties;
 import java.util.regex.PatternSyntaxException;
diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/util/RepositoryCopier.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/util/RepositoryCopier.java
index a19b5ff..a306ea8 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/util/RepositoryCopier.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/util/RepositoryCopier.java
@@ -25,7 +25,6 @@
 
 import javax.jcr.Credentials;
 import javax.jcr.ImportUUIDBehavior;
-import javax.jcr.LoginException;
 import javax.jcr.NamespaceException;
 import javax.jcr.Node;
 import javax.jcr.NodeIterator;
