Use try-with-resource.
diff --git a/org.eclipse.gemini.web.core/src/main/java/org/eclipse/gemini/web/internal/url/DirTransformer.java b/org.eclipse.gemini.web.core/src/main/java/org/eclipse/gemini/web/internal/url/DirTransformer.java
index dcf5c30..e5bd89f 100644
--- a/org.eclipse.gemini.web.core/src/main/java/org/eclipse/gemini/web/internal/url/DirTransformer.java
+++ b/org.eclipse.gemini.web.core/src/main/java/org/eclipse/gemini/web/internal/url/DirTransformer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2010 SAP AG
+ * Copyright (c) 2010, 2014 SAP AG
  *
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -26,7 +26,6 @@
 import java.net.URL;
 import java.util.jar.JarFile;
 
-import org.eclipse.virgo.util.io.IOUtils;
 import org.eclipse.virgo.util.io.PathReference;
 
 /**
@@ -108,13 +107,10 @@
 
         PathReference manifest = fromDirectory.newChild(JarFile.MANIFEST_NAME);
         if (ensureManifestIsPresent && !manifest.exists()) {
-            InputStream defaultManifestStream = getDefaultManifestStream();
             PathReference toFile = toDirectory.newChild(JarFile.MANIFEST_NAME);
             toFile.getParent().createDirectory();
-            try {
+            try (InputStream defaultManifestStream = getDefaultManifestStream();) {
                 this.callback.transformFile(defaultManifestStream, toFile);
-            } finally {
-                IOUtils.closeQuietly(defaultManifestStream);
             }
         }
     }
@@ -134,12 +130,9 @@
     }
 
     private void transformFile(PathReference fromFile, PathReference toFile) throws IOException {
-        FileInputStream fis = new FileInputStream(fromFile.toFile());
         boolean transformed = false;
-        try {
+        try (FileInputStream fis = new FileInputStream(fromFile.toFile());) {
             transformed = this.callback.transformFile(fis, toFile);
-        } finally {
-            IOUtils.closeQuietly(fis);
         }
         if (!transformed) {
             toFile.getParent().createDirectory();
@@ -149,10 +142,10 @@
 
     private InputStream getDefaultManifestStream() {
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        PrintWriter writer = new PrintWriter(baos);
-        writer.println(MANIFEST_VERSION_HEADER);
-        writer.println();
-        writer.close();
-        return new ByteArrayInputStream(baos.toByteArray());
+        try (PrintWriter writer = new PrintWriter(baos);) {
+            writer.println(MANIFEST_VERSION_HEADER);
+            writer.println();
+            return new ByteArrayInputStream(baos.toByteArray());
+        }
     }
 }
diff --git a/org.eclipse.gemini.web.core/src/main/java/org/eclipse/gemini/web/internal/url/WebBundleScanner.java b/org.eclipse.gemini.web.core/src/main/java/org/eclipse/gemini/web/internal/url/WebBundleScanner.java
index 5c8db21..eec09a1 100644
--- a/org.eclipse.gemini.web.core/src/main/java/org/eclipse/gemini/web/internal/url/WebBundleScanner.java
+++ b/org.eclipse.gemini.web.core/src/main/java/org/eclipse/gemini/web/internal/url/WebBundleScanner.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009, 2012 VMware Inc.
+ * Copyright (c) 2009, 2014 VMware Inc.
  *
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -36,7 +36,6 @@
 import java.util.zip.ZipEntry;
 
 import org.eclipse.gemini.web.internal.WebContainerUtils;
-import org.eclipse.virgo.util.io.IOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -153,17 +152,10 @@
     }
 
     private void doScanNestedJar(File file) throws IOException {
-        JarInputStream jis = null;
-
-        try {
-            jis = new JarInputStream(new FileInputStream(file));
+        try (JarInputStream jis = new JarInputStream(new FileInputStream(file));) {
             doScanNestedJar(file.getAbsolutePath(), jis);
         } catch (IOException e) {
             throw new IOException("Cannot scan " + file.getAbsolutePath(), e);
-        } finally {
-            if (jis != null) {
-                IOUtils.closeQuietly(jis);
-            }
         }
     }
 
@@ -182,8 +174,7 @@
     }
 
     private void scanWarFile() throws IOException {
-        JarInputStream jis = new JarInputStream(this.source.openStream());
-        try {
+        try (JarInputStream jis = new JarInputStream(this.source.openStream());) {
             JarEntry entry;
             while ((entry = jis.getNextJarEntry()) != null) {
                 String entryName = entry.getName();
@@ -196,8 +187,6 @@
                     this.callBack.classFound(entry.getName().substring(CLASSES_ENTRY_PREFIX.length()));
                 }
             }
-        } finally {
-            IOUtils.closeQuietly(jis);
         }
     }
 
@@ -291,8 +280,7 @@
     }
 
     private void scanNestedJarInWarFileWithStream(String jarPath) throws IOException {
-        JarInputStream jis = new JarInputStream(this.source.openStream());
-        try {
+        try (JarInputStream jis = new JarInputStream(this.source.openStream());) {
             JarEntry entry;
             while ((entry = jis.getNextJarEntry()) != null) {
                 String entryName = entry.getName();
@@ -303,8 +291,6 @@
                     }
                 }
             }
-        } finally {
-            IOUtils.closeQuietly(jis);
         }
     }
 
diff --git a/org.eclipse.gemini.web.core/src/main/java/org/eclipse/gemini/web/internal/url/WebBundleUrlStreamHandlerService.java b/org.eclipse.gemini.web.core/src/main/java/org/eclipse/gemini/web/internal/url/WebBundleUrlStreamHandlerService.java
index 0edc8eb..2228d5d 100644
--- a/org.eclipse.gemini.web.core/src/main/java/org/eclipse/gemini/web/internal/url/WebBundleUrlStreamHandlerService.java
+++ b/org.eclipse.gemini.web.core/src/main/java/org/eclipse/gemini/web/internal/url/WebBundleUrlStreamHandlerService.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009, 2010 VMware Inc.
+ * Copyright (c) 2009, 2014 VMware Inc.
  *
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -36,7 +36,6 @@
 import org.eclipse.gemini.web.core.WebBundleManifestTransformer;
 import org.eclipse.gemini.web.internal.WebContainerUtils;
 import org.eclipse.gemini.web.internal.url.DirTransformer.DirTransformerCallback;
-import org.eclipse.virgo.util.io.IOUtils;
 import org.eclipse.virgo.util.io.JarTransformer;
 import org.eclipse.virgo.util.io.JarTransformer.JarTransformerCallback;
 import org.eclipse.virgo.util.io.JarTransformingURLConnection;
@@ -153,12 +152,8 @@
         public boolean transformFile(InputStream inputStream, PathReference toFile) throws IOException {
             if (MANIFEST_MF.equals(toFile.getName()) && META_INF.equals(toFile.getParent().getName())) {
                 toFile.getParent().createDirectory();
-                OutputStream outputStream = null;
-                try {
-                    outputStream = new FileOutputStream(toFile.toFile());
+                try (OutputStream outputStream = new FileOutputStream(toFile.toFile());) {
                     transformManifest(inputStream, outputStream);
-                } finally {
-                    IOUtils.closeQuietly(outputStream);
                 }
                 return true;
             }
diff --git a/org.eclipse.gemini.web.core/src/test/java/org/eclipse/gemini/web/internal/url/DirTransformerTests.java b/org.eclipse.gemini.web.core/src/test/java/org/eclipse/gemini/web/internal/url/DirTransformerTests.java
index 0fcd123..a908a6c 100644
--- a/org.eclipse.gemini.web.core/src/test/java/org/eclipse/gemini/web/internal/url/DirTransformerTests.java
+++ b/org.eclipse.gemini.web.core/src/test/java/org/eclipse/gemini/web/internal/url/DirTransformerTests.java
@@ -34,7 +34,6 @@
 import java.util.jar.Manifest;
 
 import org.eclipse.gemini.web.internal.url.DirTransformer.DirTransformerCallback;
-import org.eclipse.virgo.util.io.IOUtils;
 import org.eclipse.virgo.util.io.PathReference;
 import org.junit.Test;
 
@@ -180,32 +179,21 @@
     }
 
     private void checkManifest(File manifestFile) throws IOException {
-        InputStream is = null;
-        try {
-            is = new FileInputStream(manifestFile);
+        try (InputStream is = new FileInputStream(manifestFile);) {
             Manifest manifest = new Manifest(is);
             Attributes attr = manifest.getMainAttributes();
             String value = attr.getValue("Custom-Header");
             assertEquals("test", value);
             assertEquals(1, attr.size());
-        } finally {
-            IOUtils.closeQuietly(is);
         }
     }
 
     private void createManifest(File manifest, String... headers) throws IOException {
-        OutputStream outputStream = null;
-        PrintWriter writer = null;
-        try {
-            outputStream = new FileOutputStream(manifest);
-            writer = new PrintWriter(manifest);
+        try (OutputStream outputStream = new FileOutputStream(manifest); PrintWriter writer = new PrintWriter(manifest);) {
             for (String header : headers) {
                 writer.println(header);
             }
             writer.println();
-        } finally {
-            IOUtils.closeQuietly(writer);
-            IOUtils.closeQuietly(outputStream);
         }
     }
 }
diff --git a/org.eclipse.gemini.web.core/src/test/java/org/eclipse/gemini/web/internal/url/DirTransformingURLConnectionTests.java b/org.eclipse.gemini.web.core/src/test/java/org/eclipse/gemini/web/internal/url/DirTransformingURLConnectionTests.java
index f2acb52..20237a9 100644
--- a/org.eclipse.gemini.web.core/src/test/java/org/eclipse/gemini/web/internal/url/DirTransformingURLConnectionTests.java
+++ b/org.eclipse.gemini.web.core/src/test/java/org/eclipse/gemini/web/internal/url/DirTransformingURLConnectionTests.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2010 SAP AG
+ * Copyright (c) 2010, 2014 SAP AG
  *
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -62,8 +62,9 @@
 
         DirTransformingURLConnection connection = new DirTransformingURLConnection(directory, transformer);
         connection.setTransformedURL(tempDirectory);
-        InputStream is = connection.getInputStream();
-        assertNotNull(is);
+        try (InputStream is = connection.getInputStream();) {
+            assertNotNull(is);
+        }
         URL url = connection.getURL();
         assertTrue(tempDirectory.equals(url));
 
diff --git a/org.eclipse.gemini.web.core/src/test/java/org/eclipse/gemini/web/internal/url/WebBundleUrlStreamHandlerServiceTests.java b/org.eclipse.gemini.web.core/src/test/java/org/eclipse/gemini/web/internal/url/WebBundleUrlStreamHandlerServiceTests.java
index d285b2c..194be35 100644
--- a/org.eclipse.gemini.web.core/src/test/java/org/eclipse/gemini/web/internal/url/WebBundleUrlStreamHandlerServiceTests.java
+++ b/org.eclipse.gemini.web.core/src/test/java/org/eclipse/gemini/web/internal/url/WebBundleUrlStreamHandlerServiceTests.java
@@ -39,7 +39,6 @@
 import java.util.jar.Manifest;
 
 import org.eclipse.virgo.util.io.FileSystemUtils;
-import org.eclipse.virgo.util.io.IOUtils;
 import org.eclipse.virgo.util.io.PathReference;
 import org.junit.Test;
 
@@ -51,8 +50,7 @@
         URLConnection connection = url.toURL().openConnection();
         assertNotNull(connection);
 
-        try (InputStream inputStream = connection.getInputStream();
-            JarInputStream jarInputStream = new JarInputStream(inputStream);) {
+        try (InputStream inputStream = connection.getInputStream(); JarInputStream jarInputStream = new JarInputStream(inputStream);) {
             Manifest manifest = jarInputStream.getManifest();
 
             if (manifest != null) {
@@ -118,14 +116,13 @@
     }
 
     private void checkContent(URLConnection connection, String contextPath, File webXml) throws Exception {
-        InputStream inputStream = connection.getInputStream();
-        assertNotNull(inputStream);
+        try (InputStream inputStream = connection.getInputStream();) {
+            assertNotNull(inputStream);
+        }
 
         File webAppDir = new File(connection.getURL().getPath());
         // Check Manifest
-        InputStream is = null;
-        try {
-            is = new FileInputStream(new File(webAppDir, JarFile.MANIFEST_NAME));
+        try (InputStream is = new FileInputStream(new File(webAppDir, JarFile.MANIFEST_NAME));) {
             Manifest manifest = new Manifest(is);
 
             if (manifest != null) {
@@ -138,8 +135,6 @@
                     }
                 }
             }
-        } finally {
-            IOUtils.closeQuietly(is);
         }
 
         // Check web.xml
@@ -151,14 +146,12 @@
     }
 
     private void createManifest(File manifest, String... headers) throws Exception {
-        OutputStream os = new FileOutputStream(manifest);
-        PrintWriter writer = new PrintWriter(os);
-        for (String header : headers) {
-            writer.println(header);
+        try (OutputStream os = new FileOutputStream(manifest); PrintWriter writer = new PrintWriter(os);) {
+            for (String header : headers) {
+                writer.println(header);
+            }
+            writer.println();
         }
-        writer.println();
-        writer.close();
-        IOUtils.closeQuietly(os);
     }
 
     private static class TestWarUrl extends WebBundleUrl {
diff --git a/org.eclipse.gemini.web.test/src/test/java/org/eclipse/gemini/web/test/extender/ExtenderBase.java b/org.eclipse.gemini.web.test/src/test/java/org/eclipse/gemini/web/test/extender/ExtenderBase.java
index 9d7a964..4f44a23 100644
--- a/org.eclipse.gemini.web.test/src/test/java/org/eclipse/gemini/web/test/extender/ExtenderBase.java
+++ b/org.eclipse.gemini.web.test/src/test/java/org/eclipse/gemini/web/test/extender/ExtenderBase.java
@@ -42,7 +42,7 @@
 

     protected static final String REQUEST_URL = "http://localhost:8080/simple-war/index.html";

 

-    private BundleContext context = TestFrameworkUtils.getBundleContextForTestClass(getClass());

+    private final BundleContext context = TestFrameworkUtils.getBundleContextForTestClass(getClass());

 

     protected BundleContext getBundleContext() {

         return this.context;

@@ -187,8 +187,7 @@
     protected void validateURL(String path, String expectedResponse) throws MalformedURLException, IOException, InterruptedException {

         InputStream stream = openInputStream(path);

         assertNotNull(stream);

-        BufferedReader reader = new BufferedReader(new InputStreamReader(stream));

-        try {

+        try (BufferedReader reader = new BufferedReader(new InputStreamReader(stream));) {

             if (expectedResponse == null) {

                 String line = null;

                 while ((line = reader.readLine()) != null) {

@@ -197,16 +196,12 @@
             } else {

                 Assert.assertEquals(expectedResponse, reader.readLine());

             }

-        } finally {

-            reader.close();

         }

     }

 

     private void validateNotFound(String path) throws Exception {

         URL url = new URL(path);

-        try {

-            InputStream stream = url.openConnection().getInputStream();

-            stream.close();

+        try (InputStream stream = url.openConnection().getInputStream();) {

             fail("URL '" + path + "' is still deployed");

         } catch (IOException e) {

         }

diff --git a/org.eclipse.gemini.web.test/src/test/java/org/eclipse/gemini/web/test/extender/StreamBasedExtenderTests.java b/org.eclipse.gemini.web.test/src/test/java/org/eclipse/gemini/web/test/extender/StreamBasedExtenderTests.java
index d1944ba..9da28ea 100644
--- a/org.eclipse.gemini.web.test/src/test/java/org/eclipse/gemini/web/test/extender/StreamBasedExtenderTests.java
+++ b/org.eclipse.gemini.web.test/src/test/java/org/eclipse/gemini/web/test/extender/StreamBasedExtenderTests.java
@@ -117,30 +117,25 @@
         super.installWar2("?Bundle-ManifestVersion=2&Web-ContextPath=/simple-war", REQUEST_URL);
     }
 
+    @Override
     protected Bundle installWarBundle(String suffix) throws BundleException {
         return installBundle("simple-war.war", "webbundle:file:../org.eclipse.gemini.web.core/target/resources/simple-war.war", suffix);
     }
 
+    @Override
     protected Bundle installBundle(String location, String bundleUrl, String suffix) throws BundleException {
-        InputStream in = null;
+        URL url = null;
         try {
-            URL url = new URL(bundleUrl + suffix);
-            in = url.openStream();
+            url = new URL(bundleUrl + suffix);
         } catch (MalformedURLException e) {
             fail("Unexpected exception " + e.getMessage());
-        } catch (IOException e) {
-            fail("Unexpected exception " + e.getMessage());
         }
 
-        try {
+        try (InputStream in = url.openStream();) {
             return getBundleContext().installBundle(location, in);
-        } finally {
-            if (in != null) {
-                try {
-                    in.close();
-                } catch (IOException e) {
-                }
-            }
+        } catch (IOException e) {
+            fail("Unexpected exception " + e.getMessage());
+            return null;
         }
     }
 }
diff --git a/org.eclipse.gemini.web.test/src/test/java/org/eclipse/gemini/web/test/tomcat/TomcatServletContainerTests.java b/org.eclipse.gemini.web.test/src/test/java/org/eclipse/gemini/web/test/tomcat/TomcatServletContainerTests.java
index 9f18194..3e06508 100644
--- a/org.eclipse.gemini.web.test/src/test/java/org/eclipse/gemini/web/test/tomcat/TomcatServletContainerTests.java
+++ b/org.eclipse.gemini.web.test/src/test/java/org/eclipse/gemini/web/test/tomcat/TomcatServletContainerTests.java
@@ -45,7 +45,6 @@
 import org.eclipse.virgo.test.framework.TestFrameworkUtils;
 import org.eclipse.virgo.util.io.FileCopyUtils;
 import org.eclipse.virgo.util.io.FileSystemUtils;
-import org.eclipse.virgo.util.io.IOUtils;
 import org.eclipse.virgo.util.io.PathReference;
 import org.eclipse.virgo.util.io.ZipUtils;
 import org.junit.Before;
@@ -119,20 +118,11 @@
     @Test
     public void testServletContainerAvailable() {
         assertNotNull(this.container);
-        Socket socket = null;
-        try {
-            socket = new Socket("localhost", 8080);
+        try (Socket socket = new Socket("localhost", 8080);) {
         } catch (UnknownHostException e) {
             fail("Unable to connect");
         } catch (IOException e) {
             fail("Unable to connect");
-        } finally {
-            if (socket != null) {
-                try {
-                    socket.close();
-                } catch (IOException e) {
-                }
-            }
         }
     }
 
@@ -362,13 +352,12 @@
 
     private void validateNotFound(String path) throws Exception {
         URL url = new URL(path);
-        try {
-            url.openConnection().getInputStream();
+        try (InputStream is = url.openConnection().getInputStream();) {
+            fail("URL '" + path + "' is still deployed");
         } catch (IOException e) {
             assertTrue("success case", true);
             return;
         }
-        fail("URL '" + path + "' is still deployed");
     }
 
     private PathReference explode(PathReference packed) throws IOException {
@@ -632,13 +621,9 @@
         if (!file.getParentFile().exists()) {
             assertTrue(file.getParentFile().mkdirs());
         }
-        FileWriter fWriter = null;
-        try {
-            fWriter = new FileWriter(file);
+        try (FileWriter fWriter = new FileWriter(file);) {
             fWriter.write(content);
             fWriter.flush();
-        } finally {
-            IOUtils.closeQuietly(fWriter);
         }
     }
 
diff --git a/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/WebappConfigLocator.java b/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/WebappConfigLocator.java
index 0caef5d..4dae2fc 100755
--- a/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/WebappConfigLocator.java
+++ b/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/WebappConfigLocator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2010 SAP AG
+ * Copyright (c) 2010, 2014 SAP AG
  *
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -147,22 +147,13 @@
                 return contextXml.toURI().toURL();
             }
         } else {
-            JarFile jar = null;
-            try {
-                jar = new JarFile(docBaseFile);
+            try (JarFile jar = new JarFile(docBaseFile);) {
                 ZipEntry contextXmlEntry = jar.getEntry(CONTEXT_XML);
                 if (contextXmlEntry != null) {
                     return new URL(JAR_SCHEMA + docBaseFile.toURI().toString() + JAR_TO_ENTRY_SEPARATOR + CONTEXT_XML);
                 }
             } catch (IOException e) {
                 throw new ServletContainerException("Cannot open for reading " + docBaseFile.getAbsolutePath(), e);
-            } finally {
-                if (jar != null) {
-                    try {
-                        jar.close();
-                    } catch (IOException _) {
-                    }
-                }
             }
         }
         return null;
@@ -207,28 +198,21 @@
             return null;
         }
 
-        JarFile jarFile = null;
         try {
             URLConnection connection = bundleUrl.openConnection();
 
             if (connection instanceof JarURLConnection) {
                 JarURLConnection jarURLConnection = (JarURLConnection) connection;
                 jarURLConnection.setUseCaches(false);
-                jarFile = jarURLConnection.getJarFile();
-                String entryName = jarURLConnection.getEntryName();
-                if (entryName != null && jarFile != null && jarFile.getEntry(entryName) != null) {
-                    return bundleUrl;
+                try (JarFile jarFile = jarURLConnection.getJarFile();) {
+                    String entryName = jarURLConnection.getEntryName();
+                    if (entryName != null && jarFile != null && jarFile.getEntry(entryName) != null) {
+                        return bundleUrl;
+                    }
                 }
             }
         } catch (IOException e) {
             return null;
-        } finally {
-            if (jarFile != null) {
-                try {
-                    jarFile.close();
-                } catch (IOException _) {
-                }
-            }
         }
 
         return null;
diff --git a/org.eclipse.gemini.web.tomcat/src/test/java/org/eclipse/gemini/web/tomcat/internal/WebappConfigLocatorTests.java b/org.eclipse.gemini.web.tomcat/src/test/java/org/eclipse/gemini/web/tomcat/internal/WebappConfigLocatorTests.java
index c18ff23..37314bc 100755
--- a/org.eclipse.gemini.web.tomcat/src/test/java/org/eclipse/gemini/web/tomcat/internal/WebappConfigLocatorTests.java
+++ b/org.eclipse.gemini.web.tomcat/src/test/java/org/eclipse/gemini/web/tomcat/internal/WebappConfigLocatorTests.java
@@ -36,7 +36,6 @@
 import org.apache.catalina.Engine;
 import org.apache.catalina.Host;
 import org.eclipse.gemini.web.core.spi.ServletContainerException;
-import org.eclipse.virgo.util.io.IOUtils;
 import org.junit.Before;
 import org.junit.Test;
 import org.osgi.framework.Bundle;
@@ -88,31 +87,18 @@
         byte[] buffer = new byte[1024];
         int bytesRead;
 
-        FileOutputStream stream = null;
-        JarOutputStream out = null;
-        FileInputStream file = null;
-        try {
-            stream = new FileOutputStream(jarFile1.getPath());
-            out = new JarOutputStream(stream, new Manifest());
-            file = new FileInputStream(new File(urlFile2.getPath()));
+        try (FileOutputStream stream = new FileOutputStream(jarFile1.getPath());
+            JarOutputStream out = new JarOutputStream(stream, new Manifest());
+            FileInputStream file = new FileInputStream(new File(urlFile2.getPath()));) {
             JarEntry jarAdd = new JarEntry(JAR_ENTRY_NAME);
             out.putNextEntry(jarAdd);
             while ((bytesRead = file.read(buffer)) != -1) {
                 out.write(buffer, 0, bytesRead);
             }
             out.closeEntry();
-        } finally {
-            IOUtils.closeQuietly(file);
-            IOUtils.closeQuietly(out);
-            IOUtils.closeQuietly(stream);
         }
 
-        try {
-            stream = new FileOutputStream(jarFile2.getPath());
-            out = new JarOutputStream(stream, new Manifest());
-        } finally {
-            IOUtils.closeQuietly(out);
-            IOUtils.closeQuietly(stream);
+        try (FileOutputStream stream = new FileOutputStream(jarFile2.getPath()); JarOutputStream out = new JarOutputStream(stream, new Manifest());) {
         }
     }