diff --git a/framework/ipc/src/org/apache/cloudstack/framework/serializer/OnwireClassRegistry.java b/framework/ipc/src/org/apache/cloudstack/framework/serializer/OnwireClassRegistry.java index 46e5965d665d..872e49c2af5b 100644 --- a/framework/ipc/src/org/apache/cloudstack/framework/serializer/OnwireClassRegistry.java +++ b/framework/ipc/src/org/apache/cloudstack/framework/serializer/OnwireClassRegistry.java @@ -32,7 +32,6 @@ import java.util.jar.JarEntry; import java.util.jar.JarInputStream; -import org.apache.commons.io.IOUtils; import org.apache.log4j.Logger; @@ -107,10 +106,10 @@ static Set> getClasses(ClassLoader loader, String packageName) { if (resources != null) { while (resources.hasMoreElements()) { String filePath = resources.nextElement().getFile(); - // WINDOWS HACK - if (filePath.indexOf("%20") > 0) - filePath = filePath.replaceAll("%20", " "); if (filePath != null) { + // WINDOWS HACK + if (filePath.indexOf("%20") > 0) + filePath = filePath.replaceAll("%20", " "); if ((filePath.indexOf("!") > 0) && (filePath.indexOf(".jar") > 0)) { String jarPath = filePath.substring(0, filePath.indexOf("!")).substring(filePath.indexOf(":") + 1); // WINDOWS HACK @@ -156,28 +155,27 @@ static Set> getFromDirectory(File directory, String packageName) throws static Set> getFromJARFile(String jar, String packageName) throws IOException, ClassNotFoundException { Set> classes = new HashSet>(); - JarInputStream jarFile = new JarInputStream(new FileInputStream(jar)); - JarEntry jarEntry; - do { - jarEntry = jarFile.getNextJarEntry(); - if (jarEntry != null) { - String className = jarEntry.getName(); - if (className.endsWith(".class")) { - className = stripFilenameExtension(className); - if (className.startsWith(packageName)) { - try { - Class clz = Class.forName(className.replace('/', '.')); - classes.add(clz); - } catch (ClassNotFoundException | NoClassDefFoundError e) { - s_logger.warn("Unable to load class from jar file", e); + try (JarInputStream jarFile = new JarInputStream(new FileInputStream(jar));) { + JarEntry jarEntry; + do { + jarEntry = jarFile.getNextJarEntry(); + if (jarEntry != null) { + String className = jarEntry.getName(); + if (className.endsWith(".class")) { + className = stripFilenameExtension(className); + if (className.startsWith(packageName)) { + try { + Class clz = Class.forName(className.replace('/', '.')); + classes.add(clz); + } catch (ClassNotFoundException | NoClassDefFoundError e) { + s_logger.warn("Unable to load class from jar file", e); + } } } } - } - } while (jarEntry != null); - - IOUtils.closeQuietly(jarFile); - return classes; + } while (jarEntry != null); + return classes; + } } static String stripFilenameExtension(String file) {