view patches/boot/ecj-trywithresources.patch @ 2892:11416bb1b308 icedtea-2.7.0pre07

Bump to icedtea-2.7.0pre07. Upstream changes: - Bump to icedtea-2.7.0pre07 - PR2938: Fix build of 8148487 backport - PR3102: Extend 8022594 to AixPollPort - S4858370: JDWP: Memory Leak: GlobalRefs never deleted when processing invokeMethod command - S4963723: Implement SHA-224 - S6414899: P11Digest should support cloning - S6425769: Allow specifying an address to bind JMX remote connector - S6854417: TESTBUG: java/util/regex/RegExTest.java fails intermittently - S6953295: Move few sun.security.{util, x509, pkcs} classes used by keytool/jarsigner to another package - S6956398: make ephemeral DH key match the length of the certificate key - S6961123: setWMClass fails to null-terminate WM_CLASS string - S6966259: Make PrincipalName and Realm immutable - S7044060: Need to support NSA Suite B Cryptography algorithms - S7060849: Eliminate pack200 build warnings - S7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror - S7069870: Parts of the JDK erroneously rely on generic array initializers with diamond - S7081817: test/sun/security/provider/certpath/X509CertPath/IllegalCertiticates.java failing - S7102686: Restructure timestamp code so that jars and modules can more easily share the same code - S7105780: Add SSLSocket client/SSLEngine server to templates directory - S7127906: (launcher) convert the launcher regression tests to java - S7142339: PKCS7.java is needlessly creating SHA1PRNG SecureRandom instances when timestamping is not done - S7152582: PKCS11 tests should use the NSS libraries available in the OS - S7167988: PKIX CertPathBuilder in reverse mode doesn't work if more than one trust anchor is specified - S7192202: Make sure keytool prints both unknown and unparseable extensions - S7194449: String resources for Key Tool and Policy Tool should be in their respective packages - S7196855: autotest.sh fails on ubuntu because libsoftokn.so not found - S7200682: TEST_BUG: keytool/autotest.sh still has problems with libsoftokn.so - S8002116: This JdbReadTwiceTest.sh gets an exit 1 - S8002306: (se) Selector.open fails if invoked with thread interrupt status set [win] - S8004007: test/sun/tools/jinfo/Basic.sh fails on when runSA is set to true - S8005226: java/rmi/transport/pinClientSocketFactory/PinClientSocketFactory.java fails intermittently - S8006935: Need to take care of long secret keys in HMAC/PRF compuation - S8007890: [TESTBUG] JcmdWithNMTDisabled.java fails when invoked with NMT explicitly turned on - S8009636: JARSigner including TimeStamp PolicyID (TSAPolicyID) as defined in RFC3161 - S8014097: add doPrivileged methods with limited privilege scope - S8019341: Update CookieHttpsClientTest to use the newer framework. - S8021191: Add isAuthorized check to limited doPrivileged methods - S8022228: Intermittent test failures in sun/security/ssl/javax/net/ssl/NewAPIs - S8022439: Fix lint warnings in sun.security.ec - S8022594: Potential deadlock in <clinit> of sun.nio.ch.Util/IOUtil - S8023546: sun/security/mscapi/ShortRSAKey1024.sh fails intermittently - S8027705: com/sun/jdi/JdbMethodExitTest.sh fails when a background thread is generating events. - S8028537: PPC64: Updated the JDK regression tests to run on AIX - S8028780: JDK KRB5 module throws OutOfMemoryError when CCache is corrupt - S8036132: Tab characters in test/com/sun/jdi files - S8036612: [parfait] JNI exception pending in jdk/src/windows/native/sun/security/mscapi/security.cpp - S8037557: test SessionCacheSizeTests.java timeout - S8038837: Add support to jarsigner for specifying timestamp hash algorithm - S8038963: com/sun/jdi tests fail because cygwin's ps sometimes misses processes - S8039921: SHA1WithDSA with key > 1024 bits not working - S8044419: TEST_BUG: com/sun/jdi/JdbReadTwiceTest.sh fails when run under root - S8048030: Expectations should be consistent - S8059054: Better URL processing - S8059661: Test SoftReference and OOM behavior - S8064331: JavaSecurityAccess.doIntersectionPrivilege() drops the information about the domain combiner of the stack ACC - S8068761: [TEST_BUG] java/nio/channels/ServerSocketChannel/AdaptServerSocket.java failed with SocketTimeoutException - S8068842: Better JAXP data handling - S8072753: Nondeterministic wrong answer on arithmetic - S8072932: Test fails with java.security.AccessControlException: access denied ("java.security.SecurityPermission" "getDomainCombiner") - S8073735: [TEST_BUG] compiler/loopopts/CountedLoopProblem.java got OOME - S8074068: Cleanup in src/share/classes/sun/security/x509/ - S8074146: [TEST_BUG] jdb has succeded to read an unreadable file - S8075773: jps running as root fails after the fix of JDK-8050807 - S8076339: Better handling of remote object invocation - S8076383: Better CORBA exception handling - S8076387: Better CORBA value handling - S8076392: Improve IIOPInputStream consistency - S8076413: Better JRMP message handling - S8076506: Increment minor version of HSx for 7u91 and initialize the build number - S8078427: More supportive home environment - S8078440: Safer managed types - S8078822: 8068842 fix missed one new file PrimeNumberSequenceGenerator.java - S8079323: Serialization compatibility for Templates: need to exclude Hashtable from serialization - S8079410: Hotspot version to share the same update and build version from JDK - S8079718: IIOP Input Stream Hooking - S8080541: More direct property handling - S8080688: Service for DGC services - S8081297: SSL Problem with Tomcat - S8081475: SystemTap does not work when JDK is compiled with GCC 5 - S8081760: Better group dynamics - S8086092: More palette improvements - S8086733: Improve namespace handling - S8087118: Remove missing package from java.security files - S8087120: [GCC5] java.lang.StackOverflowError on Zero JVM initialization on non x86 platforms. - S8087350: Improve array conversions - S8098547: (tz) Support tzdata2015e - S8103671: More objective stream classes - S8103675: Better Binary searches - S8129952: Ensure thread consistency - S8130078: Document better processing - S8130193: Improve HTTP connections - S8130253: ObjectStreamClass.getFields too restrictive - S8130710: Better attributes processing - S8130735: javax.swing.TimerQueue: timer fires late when another timer starts - S8130864: Better server identity handling - S8130891: (bf) More direct buffering - S8131181: Increment minor version of HSx for 7u95 and initialize the build number - S8131291: Perfect parameter patterning - S8132042: Preserve layout presentation - S8132051: Better byte behavior - S8132082: Let OracleUcrypto accept RSAPrivateKey - S8132210: Reinforce JMX collector internals - S8132988: Better printing dialogues - S8133321: (tz) Support tzdata2015f - S8133962: More general limits - S8134297: NPE in GSSNameElement nameType check - S8134605: Partial rework of the fix for 8081297 - S8134650: Xsl transformation gives different results in 8u66 - S8134861: XSLT: Extension func call cause exception if namespace URI contains partial package name - S8135043: ObjectStreamClass.getField(String) too restrictive - S8135307: CompletionFailure thrown when calling FieldDoc.type, if the field's type is missing - S8137060: JMX memory management improvements - S8138593: Make DSA more fair - S8138716: (tz) Support tzdata2015g - S8139008: Better state table management - S8139012: Better font substitutions - S8139017: More stable image decoding - S8139436: sun.security.mscapi.KeyStore might load incomplete data - S8140244: Port fix of JDK-8075773 to MacOSX - S8140244, PR3171: Port fix of JDK-8075773 to AIX - S8140344: add support for 3 digit update release numbers - S8140543: Arrange font actions - S8141213: [Parfait]Potentially blocking function GetArrayLength called in JNI critical region at line 239 of jdk/src/share/native/sun/awt/image/jpeg/jpegdecoder.c in function GET_ARRAYS - S8141229: [Parfait] Null pointer dereference in cmsstrcasecmp of cmserr.c - S8141287: Add MD5 to jdk.certpath.disabledAlgorithms - Take 2 - S8142882: rebinding of the receiver of a DirectMethodHandle may allow a protected method to be accessed - S8142928: [TEST_BUG] sun/security/provider/certpath/ReverseBuilder/ReverseBuild.java 8u71 failure - S8143002: [Parfait] JNI exception pending in fontpath.c:1300 - S8143132: L10n resource file translation update - S8143167: Better buffering of XML strings - S8143185: Cleanup for handling proxies - S8143941: Update splashscreen displays - S8144313: Test SessionTimeOutTests can be timeout - S8144430: Improve JMX connections - S8144773: Further reduce use of MD5 - S8144955: Wrong changes were pushed with 8143942 - S8145017: Add support for 3 digit hotspot minor version numbers - S8145446: Perfect pipe placement - S8145551: Test failed with Crash for Improved font lookups - S8145982: JMXInterfaceBindingTest is failing intermittently - S8146015: JMXInterfaceBindingTest is failing intermittently for IPv6 addresses - S8146387: Test SSLSession/SessionCacheSizeTests socket accept timed out - S8146477: [TEST_BUG] ClientJSSEServerJSSE.java failing again - S8146494: Better ligature substitution - S8146498: Better device table adjustments - S8146669: Test SessionTimeOutTests fails intermittently - S8146967: [TEST_BUG] javax/security/auth/SubjectDomainCombiner/Optimize.java should use 4-args ProtectionDomain constructor - S8146993: Several javax/management/remote/mandatory regression tests fail after JDK-8138811 - S8147466: Add -fno-strict-overflow to IndicRearrangementProcessor{,2}.cpp - S8147567: InterpreterRuntime::post_field_access not updated for boolean in JDK-8132051 - S8147771: Construction of static protection domains under Javax custom policy - S8147857: [TEST] RMIConnector logs attribute names incorrectly - S8148446: (tz) Support tzdata2016a - S8148475: Missing SA Bytecode updates. - S8148487: PPC64: Better byte behavior - S8148872: Complete name checking - S8149170: Better byte behavior for native arguments - S8149367: PolicyQualifierInfo/index_Ctor JCk test fails with IOE: Invalid encoding for PolicyQualifierInfo - S8149962: Better delineation of XML processing - S8150012: Better byte behavior for reflection - S8150752: Share Class Data - S8150790: 8u75 L10n resource file translation update - S8151841: Build needs additional flags to compile with GCC 6 - S8151876: (tz) Support tzdata2016d - S8151925: Font reference improvements - S8152335: Improve MethodHandle consistency - S8152479: Coded byte streams - S8153673: [BACKOUT] JDWP: Memory Leak: GlobalRefs never deleted when processing invokeMethod command - S8154210: Zero: Better byte behaviour - S8154413: AArch64: Better byte behaviour - S8155981: Bolster bytecode verification - S8155985: Persistent Parameter Processing - S8157077: 8u101 L10n resource file updates - S8158571: Additional method handle validation - S8161262: Fix jdk build with gcc 4.1.2: -fno-strict-overflow not known. - S8162344: The API changes made by CR 7064075 need to be reverted ChangeLog: 2016-09-24 Andrew John Hughes <gnu.andrew@member.fsf.org> Bump to icedtea-2.7.0pre07. * Makefile.am, (JDK_UPDATE_VERSION): Set to 111. (BUILD_VERSION): Set to b01. (CORBA_CHANGESET): Update to icedtea-2.7.0pre07. (JAXP_CHANGESET): Likewise. (JAXWS_CHANGESET): Likewise. (JDK_CHANGESET): Likewise. (LANGTOOLS_CHANGESET): Likewise. (OPENJDK_CHANGESET): Likewise. (CORBA_SHA256SUM): Likewise. (JAXP_SHA256SUM): Likewise. (JAXWS_SHA256SUM): Likewise. (JDK_SHA256SUM): Likewise. (LANGTOOLS_SHA256SUM): Likewise. (OPENJDK_SHA256SUM): Likewise. * configure.ac: Bump to 2.7.0pre07. * hotspot.map.in: Update to icedtea-2.7.0pre07. * patches/boot/ecj-diamond.patch: Add numerous cases in JAXP classes, along with com.sun.java.util.jar.pack, java.security.Provider, java.security.Security, javax.crypto.Cipher, javax.crypto.CryptoAllPermission, javax.crypto.CryptoPermissions, javax.crypto.CryptoPolicyParser, javax.crypto.JceSecurity, javax.crypto.JceSecurityManager, javax.management.remote.rmi.RMIJRMPServerImpl, sun.reflect.annotation.AnnotationInvocationHandler, sun.security.krb5.Krb5ServiceLocator, sun.security.provider.certpath.CertStoreHelper, sun.security.provider.certpath.ssl.SSLServerCertStore, sun.security.provider.certpath.URICertStore and sun.security.ssl.DHCrypt * patches/boot/ecj-multicatch.patch: Add sun.security.krb5.PrincipalName, java.lang.invoke.MemberName, sun.invoke.util.VerifyAccess, javax.crypto.EncryptedPrivateKeyInfo, javax.crypto.SealedObject, sun.security.provider.certpath.URICertStore, sun.security.ssl.RSAClientKeyExchange, sun.security.pkcs11.P11KeyStore, sun.security.pkcs11.P11RSAKeyFactory and sun.security.tools.keytool.Main * patches/boot/ecj-stringswitch.patch: Add cases in sun.security.krb5.Config, sun.security.provider.certpath.X509CertPath, sun.security.ssl.HandshakeMessage, sun.security.ssl.X509KeyManagerImpl, sun.security.pkcs11.Config, sun.security.pkcs11.P11Key, sun.security.sasl.digest.DigestMD5Base, sun.security.sasl.digest.DigestMD5Server, sun.security.sasl.ntlm.NTLMClient, sun.security.sasl.ntlm.NTLMServer and sun.security.sasl.util.AbstractSaslImpl. * patches/boot/ecj-trywithresources.patch: Add cases in sun.security.provider.certpath.URICertStore, sun.security.tools.KeyStoreUtil, sun.security.tools.keytool.Main.
author Andrew John Hughes <gnu_andrew@member.fsf.org>
date Wed, 28 Sep 2016 07:32:57 +0100
parents bffa3455fa17
children df0f259a2fcc
line wrap: on
line source

diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java
--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java	2016-09-20 03:39:19.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java	2016-09-24 15:19:13.304801728 +0100
@@ -743,7 +743,9 @@
 
         private void dumpBand() throws IOException {
             assert(optDumpBands);
-            try (PrintStream ps = new PrintStream(getDumpStream(this, ".txt"))) {
+            PrintStream ps = null;
+            try {
+                ps = new PrintStream(getDumpStream(this, ".txt"));
                 String irr = (bandCoding == regularCoding) ? "" : " irregular";
                 ps.print("# length="+length+
                          " size="+outputSize()+
@@ -758,9 +760,19 @@
                 }
                 printArrayTo(ps, values, 0, length);
             }
-            try (OutputStream ds = getDumpStream(this, ".bnd")) {
+            finally {
+                if (ps != null)
+                    ps.close();
+            }
+            OutputStream ds = null;
+            try {
+                ds = getDumpStream(this, ".bnd");
                 bandCoding.writeArrayTo(ds, values, 0, length);
             }
+            finally {
+                if (ds != null)
+                    ds.close();
+            }
         }
 
         /** Disburse one value. */
@@ -829,12 +841,18 @@
 
         private void dumpBand() throws IOException {
             assert(optDumpBands);
-            try (OutputStream ds = getDumpStream(this, ".bnd")) {
+            OutputStream ds = null;
+            try {
+                ds = getDumpStream(this, ".bnd");
                 if (bytesForDump != null)
                     bytesForDump.writeTo(ds);
                 else
                     bytes.writeTo(ds);
             }
+            finally {
+                if (ds != null)
+                    ds.close();
+            }
         }
 
         public void readDataFrom(InputStream in) throws IOException {
diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java
--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java	2016-09-24 15:17:56.922022903 +0100
+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java	2016-09-24 15:19:13.308801664 +0100
@@ -151,8 +151,13 @@
                 if ("--config-file=".equals(state)) {
                     String propFile = av.remove(0);
                     Properties fileProps = new Properties();
-                    try (InputStream propIn = new FileInputStream(propFile)) {
+                    InputStream propIn = null;
+                    try {
+                        propIn = new FileInputStream(propFile);
                         fileProps.load(propIn);
+                    } finally {
+                        if (propIn != null)
+                            propIn.close();
                     }
                     if (engProps.get(verboseProp) != null)
                         fileProps.list(System.out);
@@ -343,9 +348,14 @@
                 else
                     fileOut = new FileOutputStream(outfile);
                 fileOut = new BufferedOutputStream(fileOut);
-                try (JarOutputStream out = new JarOutputStream(fileOut)) {
+                JarOutputStream out = null;
+                try {
+                    out = new JarOutputStream(fileOut);
                     junpack.unpack(in, out);
                     // p200 closes in but not out
+                } finally {
+                    if (out != null)
+                        out.close();
                 }
                 // At this point, we have a good jarfile (or newfile, if -r)
             }
@@ -407,7 +417,9 @@
         long filelen = new File(jarfile).length();
         if (filelen <= 0)  return "";
         long skiplen = Math.max(0, filelen - tail.length);
-        try (InputStream in = new FileInputStream(new File(jarfile))) {
+        InputStream in = null;
+        try {
+            in = new FileInputStream(new File(jarfile));
             in.skip(skiplen);
             in.read(tail);
             for (int i = tail.length-4; i >= 0; i--) {
@@ -421,6 +433,9 @@
                 }
             }
             return "";
+        } finally {
+            if (in != null)
+                in.close();
         }
     }
 
diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java
--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java	2016-09-20 03:39:19.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java	2016-09-24 15:19:13.308801664 +0100
@@ -245,9 +245,15 @@
     void run(File inFile, JarOutputStream jstream) throws IOException {
         // %%% maybe memory-map the file, and pass it straight into unpacker
         ByteBuffer mappedFile = null;
-        try (FileInputStream fis = new FileInputStream(inFile)) {
+        FileInputStream fis = null;
+        try {
+            fis = new FileInputStream(inFile);
             run(fis, jstream, mappedFile);
         }
+        finally {
+            if (fis != null)
+                fis.close();
+        }
         // Note:  caller is responsible to finish with jstream.
     }
 
diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java
--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java	2016-09-20 03:39:19.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java	2016-09-24 15:19:13.308801664 +0100
@@ -540,9 +540,15 @@
             Index index = initCPIndex(tag, cpMap);
 
             if (optDumpBands) {
-                try (PrintStream ps = new PrintStream(getDumpStream(index, ".idx"))) {
+                PrintStream ps = null;
+                try {
+                    ps = new PrintStream(getDumpStream(index, ".idx"));
                     printArrayTo(ps, index.cpMap, 0, index.cpMap.length);
                 }
+                finally {
+                    if (ps != null)
+                        ps.close();
+                }
             }
         }
 
@@ -828,9 +834,10 @@
         attr_definition_headers.readFrom(in);
         attr_definition_name.readFrom(in);
         attr_definition_layout.readFrom(in);
-        try (PrintStream dump = !optDumpBands ? null
-                 : new PrintStream(getDumpStream(attr_definition_headers, ".def")))
-        {
+        PrintStream dump = null;
+        try {
+            dump = !optDumpBands ? null
+                : new PrintStream(getDumpStream(attr_definition_headers, ".def"));
             for (int i = 0; i < numAttrDefs; i++) {
                 int       header = attr_definition_headers.getByte();
                 Utf8Entry name   = (Utf8Entry) attr_definition_name.getRef();
@@ -849,6 +856,10 @@
                 if (dump != null)  dump.println(index+" "+def);
             }
         }
+        finally {
+            if (dump != null)
+                dump.close();
+        }
         attr_definition_headers.doneDisbursing();
         attr_definition_name.doneDisbursing();
         attr_definition_layout.doneDisbursing();
diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java
--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java	2016-09-20 03:39:19.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java	2016-09-24 15:19:13.308801664 +0100
@@ -458,9 +458,15 @@
                 Utils.log.info("Writing "+cpMap.length+" "+ConstantPool.tagName(tag)+" entries...");
 
             if (optDumpBands) {
-                try (PrintStream ps = new PrintStream(getDumpStream(index, ".idx"))) {
+                PrintStream ps = null;
+                try {
+                    ps = new PrintStream(getDumpStream(index, ".idx"));
                     printArrayTo(ps, cpMap, 0, cpMap.length);
                 }
+                finally {
+                    if (ps != null)
+                        ps.close();
+                }
             }
 
             switch (tag) {
@@ -921,9 +927,10 @@
             }
         });
         attrDefsWritten = new Attribute.Layout[numAttrDefs];
-        try (PrintStream dump = !optDumpBands ? null
-                 : new PrintStream(getDumpStream(attr_definition_headers, ".def")))
-        {
+        PrintStream dump = null;
+        try {
+            dump = !optDumpBands ? null
+                : new PrintStream(getDumpStream(attr_definition_headers, ".def"));
             int[] indexForDebug = Arrays.copyOf(attrIndexLimit, ATTR_CONTEXT_LIMIT);
             for (int i = 0; i < defs.length; i++) {
                 int header = ((Integer)defs[i][0]).intValue();
@@ -949,6 +956,10 @@
                 }
             }
         }
+        finally {
+            if (dump != null)
+                dump.close();
+        }
     }
 
     void writeAttrCounts() throws IOException {
diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java
--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java	2016-09-20 03:39:19.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java	2016-09-24 15:19:13.308801664 +0100
@@ -122,8 +122,9 @@
         // Do this after the previous props are put in place,
         // to allow override if necessary.
         String propFile = "intrinsic.properties";
-
-        try (InputStream propStr = PackerImpl.class.getResourceAsStream(propFile)) {
+        InputStream propStr = null;
+        try {
+            propStr = PackerImpl.class.getResourceAsStream(propFile);
             if (propStr == null) {
                 throw new RuntimeException(propFile + " cannot be loaded");
             }
@@ -131,6 +132,14 @@
         } catch (IOException ee) {
             throw new RuntimeException(ee);
         }
+        finally {
+            try {
+                if (propStr != null)
+                    propStr.close();
+            } catch (IOException ee) {
+                throw new RuntimeException(ee);
+            }
+        }
 
         for (Map.Entry<Object, Object> e : props.entrySet()) {
             String key = (String) e.getKey();
diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java
--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java	2016-09-20 03:39:19.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java	2016-09-24 15:19:13.308801664 +0100
@@ -160,9 +160,15 @@
         }
         // Use the stream-based implementation.
         // %%% Reconsider if native unpacker learns to memory-map the file.
-        try (FileInputStream instr = new FileInputStream(in)) {
+        FileInputStream instr = null;
+        try {
+            instr = new FileInputStream(in);
             unpack(instr, out);
         }
+        finally {
+            if (instr != null)
+                instr.close();
+        }
         if (props.getBoolean(Utils.UNPACK_REMOVE_PACKFILE)) {
             in.delete();
         }
diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java
--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java	2016-09-20 03:39:19.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java	2016-09-24 15:19:13.308801664 +0100
@@ -268,18 +268,30 @@
         // 4947205 : Peformance is slow when using pack-effort=0
         out = new BufferedOutputStream(out);
         out = new NonCloser(out); // protect from JarOutputStream.close()
-        try (JarOutputStream jout = new JarOutputStream(out)) {
+        JarOutputStream jout = null;
+        try {
+            jout = new JarOutputStream(out);
             copyJarFile(in, jout);
         }
+        finally {
+            if (jout != null)
+                jout.close();
+        }
     }
     static void copyJarFile(JarFile in, OutputStream out) throws IOException {
 
         // 4947205 : Peformance is slow when using pack-effort=0
         out = new BufferedOutputStream(out);
         out = new NonCloser(out); // protect from JarOutputStream.close()
-        try (JarOutputStream jout = new JarOutputStream(out)) {
+        JarOutputStream jout = null;
+        try {
+            jout = new JarOutputStream(out);
             copyJarFile(in, jout);
         }
+        finally {
+            if (jout != null)
+                jout.close();
+        }
     }
         // Wrapper to prevent closing of client-supplied stream.
     static private
diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java
--- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java	2016-09-20 03:39:19.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java	2016-09-24 15:19:13.308801664 +0100
@@ -912,10 +912,15 @@
                             java.net.URLConnection uconn = tClass.getResource(tResource).openConnection();
                             int len = uconn.getContentLength();
                             byte[] bytes = new byte[len];
-                            try (java.io.InputStream str = uconn.getInputStream()) {
+			    java.io.InputStream str = null;
+                            try {
+			        str = uconn.getInputStream();
                                 int nr = str.read(bytes);
                                 if (nr != len)  throw new java.io.IOException(tResource);
-                            }
+                            } finally {
+			      if (str != null)
+				str.close();
+			    }
                             values[0] = bytes;
                         } catch (java.io.IOException ex) {
                             throw newInternalError(ex);
diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/Package.java openjdk-boot/jdk/src/share/classes/java/lang/Package.java
--- openjdk-boot.orig/jdk/src/share/classes/java/lang/Package.java	2016-09-20 03:39:19.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/java/lang/Package.java	2016-09-24 15:19:13.308801664 +0100
@@ -578,12 +578,23 @@
      * Returns the Manifest for the specified JAR file name.
      */
     private static Manifest loadManifest(String fn) {
-        try (FileInputStream fis = new FileInputStream(fn);
-             JarInputStream jis = new JarInputStream(fis, false))
-        {
+        FileInputStream fis = null;
+        JarInputStream jis = null;
+        try {
+            fis = new FileInputStream(fn);
+            jis = new JarInputStream(fis, false);
             return jis.getManifest();
         } catch (IOException e) {
             return null;
+        } finally {
+            try {
+                if (jis != null)
+                    jis.close();
+                if (fis != null)
+                    fis.close();
+            } catch (IOException e) {
+                return null;
+            }
         }
     }
 
diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/nio/channels/SocketChannel.java openjdk-boot/jdk/src/share/classes/java/nio/channels/SocketChannel.java
--- openjdk-boot.orig/jdk/src/share/classes/java/nio/channels/SocketChannel.java	2016-09-20 03:39:19.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/java/nio/channels/SocketChannel.java	2016-09-24 15:19:13.308801664 +0100
@@ -188,7 +188,7 @@
             } catch (Throwable suppressed) {
                 x.addSuppressed(suppressed);
             }
-            throw x;
+            throw (IOException) x;
         }
         assert sc.isConnected();
         return sc;
diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/nio/file/CopyMoveHelper.java openjdk-boot/jdk/src/share/classes/java/nio/file/CopyMoveHelper.java
--- openjdk-boot.orig/jdk/src/share/classes/java/nio/file/CopyMoveHelper.java	2016-09-20 03:39:19.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/java/nio/file/CopyMoveHelper.java	2016-09-24 15:19:13.308801664 +0100
@@ -122,9 +122,15 @@
         if (attrs.isDirectory()) {
             Files.createDirectory(target);
         } else {
-            try (InputStream in = Files.newInputStream(source)) {
+            InputStream in = null;
+            try {
+                in = Files.newInputStream(source);
                 Files.copy(in, target);
             }
+            finally {
+                if (in != null)
+                    in.close();
+            }
         }
 
         // copy basic attributes to target
@@ -142,7 +148,7 @@
                 } catch (Throwable suppressed) {
                     x.addSuppressed(suppressed);
                 }
-                throw x;
+                throw (IOException) x;
             }
         }
     }
diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/nio/file/Files.java openjdk-boot/jdk/src/share/classes/java/nio/file/Files.java
--- openjdk-boot.orig/jdk/src/share/classes/java/nio/file/Files.java	2016-09-20 03:39:19.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/java/nio/file/Files.java	2016-09-24 15:19:13.308801664 +0100
@@ -2850,8 +2850,11 @@
         }
 
         // do the copy
-        try (OutputStream out = ostream) {
-            return copy(in, out);
+        try {
+            return copy(in, ostream);
+        }
+        finally {
+            ostream.close();
         }
     }
 
@@ -2892,9 +2895,15 @@
         // ensure not null before opening file
         Objects.requireNonNull(out);
 
-        try (InputStream in = newInputStream(source)) {
+        InputStream in = null;
+        try {
+            in = newInputStream(source);
             return copy(in, out);
         }
+        finally {
+            if (in != null)
+                in.close();
+        }
     }
 
     /**
@@ -2978,14 +2987,27 @@
      *          method is invoked to check read access to the file.
      */
     public static byte[] readAllBytes(Path path) throws IOException {
-        try (SeekableByteChannel sbc = Files.newByteChannel(path);
-             InputStream in = Channels.newInputStream(sbc)) {
+        SeekableByteChannel sbc = null;
+	 InputStream in = null;
+
+        try {
+	    sbc = Files.newByteChannel(path);
+            in = Channels.newInputStream(sbc);
             long size = sbc.size();
             if (size > (long)MAX_BUFFER_SIZE)
                 throw new OutOfMemoryError("Required array size too large");
 
             return read(in, (int)size);
-        }
+        } finally {
+	    IOException e = null;
+
+	    if (in != null)
+		try { in.close(); } catch (IOException ex) { e = ex; }
+	    if (sbc != null)
+		try { sbc.close(); } catch (IOException ex) { e = ex; }
+
+	    if (e != null) throw e;
+	}
     }
 
     /**
@@ -3030,7 +3052,9 @@
     public static List<String> readAllLines(Path path, Charset cs)
         throws IOException
     {
-        try (BufferedReader reader = newBufferedReader(path, cs)) {
+        BufferedReader reader = null;
+        try {
+            reader = newBufferedReader(path, cs);
             List<String> result = new ArrayList<>();
             for (;;) {
                 String line = reader.readLine();
@@ -3040,6 +3064,10 @@
             }
             return result;
         }
+        finally {
+            if (reader != null)
+                reader.close();
+        }
     }
 
     /**
@@ -3089,7 +3117,9 @@
         // ensure bytes is not null before opening file
         Objects.requireNonNull(bytes);
 
-        try (OutputStream out = Files.newOutputStream(path, options)) {
+        OutputStream out = null;
+        try {
+            out = Files.newOutputStream(path, options);
             int len = bytes.length;
             int rem = len;
             while (rem > 0) {
@@ -3098,6 +3128,10 @@
                 rem -= n;
             }
         }
+        finally {
+            if (out != null)
+                out.close();
+        }
         return path;
     }
 
@@ -3149,12 +3183,18 @@
         Objects.requireNonNull(lines);
         CharsetEncoder encoder = cs.newEncoder();
         OutputStream out = newOutputStream(path, options);
-        try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out, encoder))) {
+        BufferedWriter writer = null;
+        try {
+            writer = new BufferedWriter(new OutputStreamWriter(out, encoder));
             for (CharSequence line: lines) {
                 writer.append(line);
                 writer.newLine();
             }
         }
+        finally {
+            if (writer != null)
+                writer.close();
+        }
         return path;
     }
 }
diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/Currency.java openjdk-boot/jdk/src/share/classes/java/util/Currency.java
--- openjdk-boot.orig/jdk/src/share/classes/java/util/Currency.java	2016-09-20 03:39:19.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/java/util/Currency.java	2016-09-24 15:19:13.308801664 +0100
@@ -237,9 +237,14 @@
                                              "currency.properties");
                     if (propFile.exists()) {
                         Properties props = new Properties();
-                        try (FileReader fr = new FileReader(propFile)) {
+                        FileReader fr = null;
+                        try {
+                            fr = new FileReader(propFile);
                             props.load(fr);
                         }
+                        finally {
+                            fr.close();
+                        }
                         Set<String> keys = props.stringPropertyNames();
                         Pattern propertiesPattern =
                             Pattern.compile("([A-Z]{3})\\s*,\\s*(\\d{3})\\s*,\\s*(\\d+)");
diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/jar/JarFile.java openjdk-boot/jdk/src/share/classes/java/util/jar/JarFile.java
--- openjdk-boot.orig/jdk/src/share/classes/java/util/jar/JarFile.java	2016-09-20 03:39:19.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/java/util/jar/JarFile.java	2016-09-24 15:19:13.308801664 +0100
@@ -386,9 +386,14 @@
      * META-INF files.
      */
     private byte[] getBytes(ZipEntry ze) throws IOException {
-        try (InputStream is = super.getInputStream(ze)) {
+	InputStream is = null;
+	try {
+	    is = super.getInputStream(ze);
             return IOUtils.readFully(is, (int)ze.getSize(), true);
-        }
+        } finally {
+	    if (is != null)
+		is.close();
+	}
     }
 
     /**
diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/sql/rowset/serial/SerialClob.java openjdk-boot/jdk/src/share/classes/javax/sql/rowset/serial/SerialClob.java
--- openjdk-boot.orig/jdk/src/share/classes/javax/sql/rowset/serial/SerialClob.java	2016-09-20 03:39:19.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/javax/sql/rowset/serial/SerialClob.java	2016-09-24 15:19:13.308801664 +0100
@@ -144,8 +144,9 @@
         buf = new char[(int)len];
         int read = 0;
         int offset = 0;
-
-        try (Reader charStream = clob.getCharacterStream()) {
+        Reader charStream = null;
+        try {
+            charStream = clob.getCharacterStream();
             if (charStream == null) {
                 throw new SQLException("Invalid Clob object. The call to getCharacterStream " +
                     "returned null which cannot be serialized.");
@@ -153,23 +154,41 @@
 
             // Note: get an ASCII stream in order to null-check it,
             // even though we don't do anything with it.
-            try (InputStream asciiStream = clob.getAsciiStream()) {
+            InputStream asciiStream = null;
+            try {
+                asciiStream = clob.getAsciiStream();
                 if (asciiStream == null) {
                     throw new SQLException("Invalid Clob object. The call to getAsciiStream " +
                         "returned null which cannot be serialized.");
                 }
             }
-
-            try (Reader reader = new BufferedReader(charStream)) {
+            finally {
+                if (asciiStream != null)
+                    asciiStream.close();
+            }
+            Reader reader = null;
+            try {
+                reader = new BufferedReader(charStream);
                 do {
                     read = reader.read(buf, offset, (int)(len - offset));
                     offset += read;
                 } while (read > 0);
             }
+            finally {
+                if (reader != null)
+                    reader.close();
+            }
         } catch (java.io.IOException ex) {
             throw new SerialException("SerialClob: " + ex.getMessage());
         }
-
+        finally {
+            try {
+                if (charStream != null)
+                    charStream.close();
+            } catch (java.io.IOException ex) {
+                throw new SerialException("SerialClob: " + ex.getMessage());
+            }
+        }
         origLen = len;
     }
 
diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/sql/rowset/spi/SyncFactory.java openjdk-boot/jdk/src/share/classes/javax/sql/rowset/spi/SyncFactory.java
--- openjdk-boot.orig/jdk/src/share/classes/javax/sql/rowset/spi/SyncFactory.java	2016-09-20 03:39:19.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/javax/sql/rowset/spi/SyncFactory.java	2016-09-24 15:19:13.308801664 +0100
@@ -382,9 +382,15 @@
                     // Load user's implementation of SyncProvider
                     // here. -Drowset.properties=/abc/def/pqr.txt
                     ROWSET_PROPERTIES = strRowsetProperties;
-                    try (FileInputStream fis = new FileInputStream(ROWSET_PROPERTIES)) {
+                    FileInputStream fis = null;
+                    try {
+                        fis = new FileInputStream(ROWSET_PROPERTIES);
                         properties.load(fis);
                     }
+                    finally {
+                        if (fis != null)
+                            fis.close();
+                    }
                     parseProperties(properties);
                 }
 
@@ -401,17 +407,20 @@
                     AccessController.doPrivileged(new PrivilegedExceptionAction<Void>() {
                         @Override
                         public Void run()  throws SyncFactoryException, IOException, FileNotFoundException {
-                            try (InputStream stream  = (cl == null) ?
-                                    ClassLoader.getSystemResourceAsStream(ROWSET_PROPERTIES)
-                                    : cl.getResourceAsStream(ROWSET_PROPERTIES)) {
-                                if (stream == null) {
-                                    throw new SyncFactoryException("Resource " + ROWSET_PROPERTIES + " not found");
-                                }
-                                properties.load(stream);
-                            }
-                            return null;
-                        }
-
+			  InputStream stream = null;
+			  try {
+			    stream =
+			      (cl == null) ? ClassLoader.getSystemResourceAsStream(ROWSET_PROPERTIES)
+			      : cl.getResourceAsStream(ROWSET_PROPERTIES);
+			    if (stream == null) {
+			      throw new SyncFactoryException("Resource " + ROWSET_PROPERTIES + " not found");
+			    }
+			    properties.load(stream);
+			  } finally {
+			    if (stream != null)
+			      stream.close();
+			  }
+			  return null; }
                     });
                 } catch (PrivilegedActionException ex) {
                     Throwable e = ex.getException();
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/launcher/LauncherHelper.java openjdk-boot/jdk/src/share/classes/sun/launcher/LauncherHelper.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/launcher/LauncherHelper.java	2016-09-24 15:17:56.922022903 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/launcher/LauncherHelper.java	2016-09-24 15:19:13.308801664 +0100
@@ -555,8 +555,9 @@
                 if (parent == null) {
                     parent = new File(".");
                 }
-                try (DirectoryStream<Path> dstream =
-                        Files.newDirectoryStream(parent.toPath(), glob)) {
+                DirectoryStream<Path> dstream = null;
+                try {
+                    dstream = Files.newDirectoryStream(parent.toPath(), glob);
                     int entries = 0;
                     for (Path p : dstream) {
                         out.add(p.normalize().toString());
@@ -571,6 +572,9 @@
                         System.err.println("Warning: passing argument as-is " + a);
                         System.err.print(e);
                     }
+                } finally {
+                    if (dstream != null)
+                        try { dstream.close(); } catch (IOException e) {}
                 }
             } else {
                 out.add(a.arg);
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/net/www/protocol/jar/URLJarFile.java openjdk-boot/jdk/src/share/classes/sun/net/www/protocol/jar/URLJarFile.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/net/www/protocol/jar/URLJarFile.java	2016-09-20 03:39:19.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/net/www/protocol/jar/URLJarFile.java	2016-09-24 15:19:13.308801664 +0100
@@ -194,7 +194,8 @@
      * Given a URL, retrieves a JAR file, caches it to disk, and creates a
      * cached JAR file object.
      */
-     private static JarFile retrieve(final URL url, final URLJarFileCloseController closeController) throws IOException {
+     private static JarFile retrieve(final URL url, final URLJarFileCloseController closeController)
+         throws IOException {
         /*
          * See if interface is set, then call retrieve function of the class
          * that implements URLJarFileCallBack interface (sun.plugin - to
@@ -211,7 +212,8 @@
             JarFile result = null;
 
             /* get the stream before asserting privileges */
-            try (final InputStream in = url.openConnection().getInputStream()) {
+            try {
+                final InputStream in = url.openConnection().getInputStream();
                 result = AccessController.doPrivileged(
                     new PrivilegedExceptionAction<JarFile>() {
                         public JarFile run() throws IOException {
@@ -227,7 +229,10 @@
                                 } catch (IOException ioe) {
                                     thr.addSuppressed(ioe);
                                 }
-                                throw thr;
+                                throw (IOException) thr;
+                            } finally {
+                                if (in != null)
+                                    in.close();
                             }
                         }
                     });
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java openjdk-boot/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java	2016-09-20 03:39:19.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java	2016-09-24 15:19:13.308801664 +0100
@@ -255,7 +255,9 @@
             this.entries = new HashMap<Path,CacheEntry>();
 
             // get the initial entries in the directory
-            try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
+            DirectoryStream<Path> stream = null;
+            try {
+                stream = Files.newDirectoryStream(dir);
                 for (Path entry: stream) {
                     // don't follow links
                     long lastModified =
@@ -264,6 +266,10 @@
                 }
             } catch (DirectoryIteratorException e) {
                 throw e.getCause();
+            } finally {
+                if (stream != null) {
+                    stream.close();
+                }
             }
         }
 
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/print/PSPrinterJob.java openjdk-boot/jdk/src/share/classes/sun/print/PSPrinterJob.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/print/PSPrinterJob.java	2016-09-20 03:39:19.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/print/PSPrinterJob.java	2016-09-24 15:19:13.312801601 +0100
@@ -680,25 +680,38 @@
 
         private void handleProcessFailure(final Process failedProcess,
                 final String[] execCmd, final int result) throws IOException {
-            try (StringWriter sw = new StringWriter();
-                    PrintWriter pw = new PrintWriter(sw)) {
+	    StringWriter sw = null;
+	    PrintWriter pw = null;
+            try { 
+		sw = new StringWriter();
+		pw = new PrintWriter(sw);
                 pw.append("error=").append(Integer.toString(result));
                 pw.append(" running:");
                 for (String arg: execCmd) {
                     pw.append(" '").append(arg).append("'");
                 }
-                try (InputStream is = failedProcess.getErrorStream();
-                        InputStreamReader isr = new InputStreamReader(is);
-                        BufferedReader br = new BufferedReader(isr)) {
+		InputStream is = null;
+		InputStreamReader isr = null;
+		BufferedReader br = null;
+                try {
+		    is = failedProcess.getErrorStream();
+                    isr = new InputStreamReader(is);
+                    br = new BufferedReader(isr);
                     while (br.ready()) {
                         pw.println();
                         pw.append("\t\t").append(br.readLine());
                     }
                 } finally {
                     pw.flush();
+		    if (br != null) br.close();
+		    if (isr != null) isr.close();
+		    if (is != null) is.close();
                     throw new IOException(sw.toString());
                 }
-            }
+            } finally {
+		if (pw != null) pw.close();
+		if (sw != null) sw.close();
+	    }
         }
 
         public Object run() {
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/log/ReliableLog.java openjdk-boot/jdk/src/share/classes/sun/rmi/log/ReliableLog.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/log/ReliableLog.java	2016-09-20 03:39:19.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/rmi/log/ReliableLog.java	2016-09-24 15:19:13.312801601 +0100
@@ -594,10 +594,16 @@
         } else {
             name = versionFile;
         }
-        try (FileOutputStream fos = new FileOutputStream(fName(name));
-             DataOutputStream out = new DataOutputStream(fos)) {
+	FileOutputStream fos = null;
+	DataOutputStream out = null;
+        try {
+	    fos = new FileOutputStream(fName(name));
+	    out = new DataOutputStream(fos);
             writeInt(out, version);
-        }
+        } finally {
+	    if (out != null) out.close();
+	    if (fos != null) fos.close();
+	}
     }
 
     /**
@@ -628,10 +634,13 @@
      * @exception IOException If an I/O error has occurred.
      */
     private int readVersion(String name) throws IOException {
-        try (DataInputStream in = new DataInputStream
-                (new FileInputStream(name))) {
+	DataInputStream in = null;
+        try {
+	    in = new DataInputStream(new FileInputStream(name));
             return in.readInt();
-        }
+        } finally {
+	    if (in != null) in.close();
+	}
     }
 
     /**
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/Activation.java openjdk-boot/jdk/src/share/classes/sun/rmi/server/Activation.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/Activation.java	2016-09-20 03:39:19.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/rmi/server/Activation.java	2016-09-24 15:19:13.312801601 +0100
@@ -1233,13 +1233,16 @@
                     PipeWriter.plugTogetherPair
                         (child.getInputStream(), System.out,
                          child.getErrorStream(), System.err);
-                    try (MarshalOutputStream out =
-                            new MarshalOutputStream(child.getOutputStream())) {
+		    MarshalOutputStream out = null;
+                    try {
+			out = new MarshalOutputStream(child.getOutputStream());
                         out.writeObject(id);
                         out.writeObject(desc);
                         out.writeLong(incarnation);
                         out.flush();
-                    }
+                    } finally {
+			if (out != null) out.close();
+		    }
 
 
                 } catch (IOException e) {
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/proxy/RMIMasterSocketFactory.java openjdk-boot/jdk/src/share/classes/sun/rmi/transport/proxy/RMIMasterSocketFactory.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/proxy/RMIMasterSocketFactory.java	2016-09-24 15:17:57.814008645 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/proxy/RMIMasterSocketFactory.java	2016-09-24 15:19:13.312801601 +0100
@@ -233,13 +233,14 @@
                         proxyLog.log(Log.BRIEF,
                             "trying with factory: " + factory);
                     }
-                    try (Socket testSocket =
-                            factory.createSocket(host, port)) {
+		    Socket testSocket = null;
+                    try {
                         // For HTTP connections, the output (POST request) must
                         // be sent before we verify a successful connection.
                         // So, sacrifice a socket for the sake of testing...
                         // The following sequence should verify a successful
                         // HTTP connection if no IOException is thrown.
+			testSocket = factory.createSocket(host, port);
                         InputStream in = testSocket.getInputStream();
                         int b = in.read(); // probably -1 for EOF...
                     } catch (IOException ex) {
@@ -249,6 +250,10 @@
 
                         continue;
                     }
+		    finally {
+			if (testSocket != null)
+			    testSocket.close();
+		    }
                     proxyLog.log(Log.BRIEF, "factory succeeded");
 
                     // factory succeeded, open new socket for caller's use
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java	2016-09-20 03:39:19.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java	2016-09-24 15:19:13.312801601 +0100
@@ -156,18 +156,33 @@
     synchronized void init(PrincipalName principal, String name)
         throws IOException, KrbException {
         primaryPrincipal = principal;
-        try (FileOutputStream fos = new FileOutputStream(name);
-             CCacheOutputStream cos = new CCacheOutputStream(fos)) {
+        FileOutputStream fos = null;
+        CCacheOutputStream cos = null;
+        try {
+            fos = new FileOutputStream(name);
+            cos = new CCacheOutputStream(fos);
             version = KRB5_FCC_FVNO_3;
             cos.writeHeader(primaryPrincipal, version);
+        } finally {
+            try {
+                if (cos != null)
+                    cos.close();
+            } finally {
+                if (fos != null)
+                    fos.close();
+            }
         }
+
         load(name);
     }
 
     synchronized void load(String name) throws IOException, KrbException {
         PrincipalName p;
-        try (FileInputStream fis = new FileInputStream(name);
-             CCacheInputStream cis = new CCacheInputStream(fis)) {
+        FileInputStream fis = null;
+        CCacheInputStream cis = null;
+        try {
+            fis = new FileInputStream(name);
+            cis = new CCacheInputStream(fis);
             version = cis.readVersion();
             if (version == KRB5_FCC_FVNO_4) {
                 tag = cis.readTag();
@@ -192,6 +207,14 @@
                     credentialsList.addElement(cred);
                 }
             }
+        } finally {
+            try {
+                if (cis != null)
+                    cis.close();
+            } finally {
+                if (fis != null)
+                    fis.close();
+            }
         }
     }
 
@@ -251,8 +274,11 @@
      * Saves the credentials cache file to the disk.
      */
     public synchronized void save() throws IOException, Asn1Exception {
-        try (FileOutputStream fos = new FileOutputStream(cacheName);
-             CCacheOutputStream cos = new CCacheOutputStream(fos)) {
+        FileOutputStream fos = null;
+        CCacheOutputStream cos = null;
+        try {
+            fos = new FileOutputStream(cacheName);
+            cos = new CCacheOutputStream(fos);
             cos.writeHeader(primaryPrincipal, version);
             Credentials[] tmp = null;
             if ((tmp = getCredsList()) != null) {
@@ -260,6 +286,14 @@
                     cos.addCreds(tmp[i]);
                 }
             }
+        } finally {
+            try {
+                if (cos != null)
+                    cos.close();
+            } finally {
+                if (fos != null)
+                    fos.close();
+            }
         }
     }
 
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java	2016-09-20 03:39:19.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java	2016-09-24 15:19:13.312801601 +0100
@@ -92,9 +92,13 @@
         tabName = filename;
         try {
             lastModified = new File(tabName).lastModified();
-            try (KeyTabInputStream kis =
-                    new KeyTabInputStream(new FileInputStream(filename))) {
+            KeyTabInputStream kis = null;
+            try {
+                kis = new KeyTabInputStream(new FileInputStream(filename));
                 load(kis);
+            } finally {
+                if (kis != null)
+                    kis.close();
             }
         } catch (FileNotFoundException e) {
             entries.clear();
@@ -441,9 +445,13 @@
     public synchronized static KeyTab create(String name)
         throws IOException, RealmException {
 
-        try (KeyTabOutputStream kos =
-                new KeyTabOutputStream(new FileOutputStream(name))) {
+        KeyTabOutputStream kos = null;
+        try {
+            kos = new KeyTabOutputStream(new FileOutputStream(name));
             kos.writeVersion(KRB5_KT_VNO);
+        } finally {
+            if (kos != null)
+                kos.close();
         }
         return new KeyTab(name);
     }
@@ -452,12 +460,16 @@
      * Saves the file at the directory.
      */
     public synchronized void save() throws IOException {
-        try (KeyTabOutputStream kos =
-                new KeyTabOutputStream(new FileOutputStream(tabName))) {
+        KeyTabOutputStream kos = null;
+        try {
+            kos = new KeyTabOutputStream(new FileOutputStream(tabName));
             kos.writeVersion(kt_vno);
             for (int i = 0; i < entries.size(); i++) {
                 kos.writeEntry(entries.elementAt(i));
             }
+        } finally {
+            if (kos != null)
+                kos.close();
         }
     }
 
@@ -521,9 +533,13 @@
      * @exception IOException.
      */
     public synchronized void createVersion(File file) throws IOException {
-        try (KeyTabOutputStream kos =
-                new KeyTabOutputStream(new FileOutputStream(file))) {
+        KeyTabOutputStream kos = null;
+        try {
+            kos = new KeyTabOutputStream(new FileOutputStream(file));
             kos.write16(KRB5_KT_VNO);
+        } finally {
+            if (kos != null)
+                kos.close();
         }
     }
 }
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/certpath/URICertStore.java openjdk-boot/jdk/src/share/classes/sun/security/provider/certpath/URICertStore.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/certpath/URICertStore.java	2016-09-24 15:17:57.818008581 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/security/provider/certpath/URICertStore.java	2016-09-24 16:37:32.492712711 +0100
@@ -279,7 +279,9 @@
                 connection.setIfModifiedSince(lastModified);
             }
             long oldLastModified = lastModified;
-            try (InputStream in = connection.getInputStream()) {
+            InputStream in = null;
+            try {
+                in = connection.getInputStream();
                 lastModified = connection.getLastModified();
                 if (oldLastModified != 0) {
                     if (oldLastModified == lastModified) {
@@ -305,6 +307,8 @@
                 // Safe cast since factory is an X.509 certificate factory
                 certs = (Collection<X509Certificate>)
                     factory.generateCertificates(in);
+            } finally {
+                if (in != null) { in.close(); }
             }
             return getMatchingCerts(certs, selector);
         } catch (IOException e) {
@@ -393,7 +397,9 @@
             }
             long oldLastModified = lastModified;
             connection.setConnectTimeout(CRL_CONNECT_TIMEOUT);
-            try (InputStream in = connection.getInputStream()) {
+            InputStream in = null;
+            try {
+                in = connection.getInputStream();
                 lastModified = connection.getLastModified();
                 if (oldLastModified != 0) {
                     if (oldLastModified == lastModified) {
@@ -417,6 +423,8 @@
                     debug.println("Downloading new CRL...");
                 }
                 crl = (X509CRL) factory.generateCRL(in);
+            } finally {
+                if (in != null) { in.close(); }
             }
             return getMatchingCRLs(crl, selector);
         } catch (IOException e) {
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/SeedGenerator.java openjdk-boot/jdk/src/share/classes/sun/security/provider/SeedGenerator.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/SeedGenerator.java	2016-09-20 03:39:19.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/security/provider/SeedGenerator.java	2016-09-24 15:19:13.312801601 +0100
@@ -179,7 +179,9 @@
                         // The temporary dir
                         File f = new File(p.getProperty("java.io.tmpdir"));
                         int count = 0;
-                        try (DirectoryStream<Path> stream = Files.newDirectoryStream(f.toPath())) {
+                        DirectoryStream<Path> stream = null;
+                        try {
+                            stream = Files.newDirectoryStream(f.toPath());
                             // We use a Random object to choose what file names
                             // should be used. Otherwise on a machine with too
                             // many files, the same first 1024 files always get
@@ -194,6 +196,10 @@
                                     break;
                                 }
                             }
+                        } finally {
+                            if (stream != null) {
+                                stream.close();
+                            }
                         }
                     } catch (Exception ex) {
                         md.update((byte)ex.hashCode());
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/tools/KeyStoreUtil.java openjdk-boot/jdk/src/share/classes/sun/security/tools/KeyStoreUtil.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/security/tools/KeyStoreUtil.java	2016-09-20 03:39:19.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/security/tools/KeyStoreUtil.java	2016-09-24 15:19:13.312801601 +0100
@@ -94,9 +94,13 @@
             return null;
         }
         KeyStore caks = null;
-        try (FileInputStream fis = new FileInputStream(file)) {
+        FileInputStream fis = null;
+        try {
+            fis = new FileInputStream(file);
             caks = KeyStore.getInstance(JKS);
             caks.load(fis, null);
+        } finally {
+            if (fis != null) { fis.close(); }
         }
         return caks;
     }
@@ -130,9 +134,9 @@
                     }
                 }
 
-                try (BufferedReader br =
-                     new BufferedReader(new InputStreamReader(
-                         url.openStream()))) {
+                BufferedReader br = null;
+                try {
+                    br = new BufferedReader(new InputStreamReader(url.openStream()));
                     String value = br.readLine();
 
                     if (value == null) {
@@ -140,6 +144,8 @@
                     }
 
                     return value.toCharArray();
+                } finally {
+                    if (br != null) { br.close(); }
                 }
             } catch (IOException ioe) {
                 System.err.println(ioe);
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/tools/keytool/Main.java openjdk-boot/jdk/src/share/classes/sun/security/tools/keytool/Main.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/security/tools/keytool/Main.java	2016-09-24 15:17:57.818008581 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/security/tools/keytool/Main.java	2016-09-24 15:19:13.316801537 +0100
@@ -917,9 +917,12 @@
         // Perform the specified command
         if (command == CERTREQ) {
             if (filename != null) {
-                try (PrintStream ps = new PrintStream(new FileOutputStream
-                                                      (filename))) {
+                PrintStream ps = null;
+                try {
+                    ps = new PrintStream(new FileOutputStream(filename));
                     doCertReq(alias, sigAlgName, ps);
+                } finally {
+                    if (ps != null) { ps.close(); }
                 }
             } else {
                 doCertReq(alias, sigAlgName, out);
@@ -936,9 +939,12 @@
             kssave = true;
         } else if (command == EXPORTCERT) {
             if (filename != null) {
-                try (PrintStream ps = new PrintStream(new FileOutputStream
-                                                   (filename))) {
+                PrintStream ps = null;
+                try {
+                    ps = new PrintStream(new FileOutputStream(filename));
                     doExportCert(alias, ps);
+                } finally {
+                    if (ps != null) { ps.close(); }
                 }
             } else {
                 doExportCert(alias, out);
@@ -963,8 +969,12 @@
             kssave = true;
         } else if (command == IDENTITYDB) {
             if (filename != null) {
-                try (InputStream inStream = new FileInputStream(filename)) {
+                InputStream inStream = null;
+                try {
+                    inStream = new FileInputStream(filename);
                     doImportIdentityDatabase(inStream);
+                } finally {
+                    if (inStream != null) { inStream.close(); }
                 }
             } else {
                 doImportIdentityDatabase(System.in);
@@ -1087,17 +1097,24 @@
                 alias = keyAlias;
             }
             if (filename != null) {
-                try (PrintStream ps =
-                         new PrintStream(new FileOutputStream(filename))) {
+                PrintStream ps = null;
+                try {
+                    ps = new PrintStream(new FileOutputStream(filename));
                     doGenCRL(ps);
+                } finally {
+                    if (ps != null) { ps.close(); }
                 }
             } else {
                 doGenCRL(out);
             }
         } else if (command == PRINTCERTREQ) {
             if (filename != null) {
-                try (InputStream inStream = new FileInputStream(filename)) {
+                InputStream inStream = null;
+                try {
+                    inStream = new FileInputStream(filename);
                     doPrintCertReq(inStream, out);
+                } finally {
+                    if (inStream != null) { inStream.close(); }
                 }
             } else {
                 doPrintCertReq(System.in, out);
@@ -1124,8 +1141,13 @@
                 } else {
                     ByteArrayOutputStream bout = new ByteArrayOutputStream();
                     keyStore.store(bout, pass);
-                    try (FileOutputStream fout = new FileOutputStream(ksfname)) {
+                    FileOutputStream fout = null;
+                    try {
+                        fout = new FileOutputStream(ksfname);
                         fout.write(bout.toByteArray());
+                    } finally {
+                        if (fout != null)
+                            fout.close();
                     }
                 }
             }
@@ -2241,12 +2263,16 @@
             int pos = 0;
             while (entries.hasMoreElements()) {
                 JarEntry je = entries.nextElement();
-                try (InputStream is = jf.getInputStream(je)) {
+                InputStream is = null;
+                try {
+                    is = jf.getInputStream(je);
                     while (is.read(buffer) != -1) {
                         // we just read. this will throw a SecurityException
                         // if a signature/digest check fails. This also
                         // populate the signers
                     }
+                } finally {
+                    if (is != null) { is.close(); }
                 }
                 CodeSigner[] signers = je.getCodeSigners();
                 if (signers != null) {
@@ -2333,8 +2359,12 @@
             }
         } else {
             if (filename != null) {
-                try (FileInputStream inStream = new FileInputStream(filename)) {
+                FileInputStream inStream = null;
+                try {
+                    inStream = new FileInputStream(filename);
                     printCertFromStream(inStream, out);
+                } finally {
+                    if (inStream != null) { inStream.close(); }
                 }
             } else {
                 printCertFromStream(System.in, out);
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java openjdk-boot/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java	2016-09-24 15:17:57.814008645 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java	2016-09-24 15:19:13.312801601 +0100
@@ -56,8 +56,9 @@
 
     private static void add(String alias, String pemCert) {
         // generate certificate from PEM certificate
-        try (ByteArrayInputStream is =
-                new ByteArrayInputStream(pemCert.getBytes())) {
+	ByteArrayInputStream is = null;
+        try {
+            is = new ByteArrayInputStream(pemCert.getBytes());
             CertificateFactory cf = CertificateFactory.getInstance("X.509");
             X509Certificate cert = (X509Certificate)cf.generateCertificate(is);
 
@@ -68,9 +69,14 @@
 	} catch (CertificateException e) {
             throw new RuntimeException(
                         "Incorrect untrusted certificate: " + alias, e);
-	} catch (IOException e) {
-            throw new RuntimeException(
-                        "Incorrect untrusted certificate: " + alias, e);
+        } finally {
+	    try {
+		if (is != null)
+		    is.close();
+	    } catch (IOException e) {
+		throw new RuntimeException(
+			 "Incorrect untrusted certificate: " + alias, e);
+	    }
         }
     }
 
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/tools/jcmd/Arguments.java openjdk-boot/jdk/src/share/classes/sun/tools/jcmd/Arguments.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/tools/jcmd/Arguments.java	2016-09-20 03:39:19.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/tools/jcmd/Arguments.java	2016-09-24 15:19:13.312801601 +0100
@@ -99,14 +99,19 @@
     }
 
     private void readCommandFile(String path) throws IOException {
-        try (BufferedReader bf = new BufferedReader(new FileReader(path));) {
-                StringBuilder sb = new StringBuilder();
-                String s;
-                while ((s = bf.readLine()) != null) {
-                    sb.append(s).append("\n");
-                }
-                command = sb.toString();
-            }
+	BufferedReader bf = null;
+        try {
+	    bf = new BufferedReader(new FileReader(path));
+	    StringBuilder sb = new StringBuilder();
+	    String s;
+	    while ((s = bf.readLine()) != null) {
+		sb.append(s).append("\n");
+	    }
+	    command = sb.toString();
+	} finally {
+	    if (bf != null)
+		bf.close();
+	}
     }
 
     public static void usage() {
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/tools/jcmd/JCmd.java openjdk-boot/jdk/src/share/classes/sun/tools/jcmd/JCmd.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/tools/jcmd/JCmd.java	2016-09-24 15:17:57.814008645 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/tools/jcmd/JCmd.java	2016-09-24 15:19:13.312801601 +0100
@@ -158,7 +158,9 @@
             if (line.trim().equals("stop")) {
                 break;
             }
-            try (InputStream in = hvm.executeJCmd(line);) {
+            InputStream in = null;
+            try {
+                in = hvm.executeJCmd(line);
                 // read to EOF and just print output
                 byte b[] = new byte[256];
                 int n;
@@ -169,6 +171,9 @@
                         System.out.print(s);
                     }
                 } while (n > 0);
+            } finally {
+                if (in != null)
+                    in.close();
             }
         }
         vm.detach();
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/util/calendar/LocalGregorianCalendar.java openjdk-boot/jdk/src/share/classes/sun/util/calendar/LocalGregorianCalendar.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/util/calendar/LocalGregorianCalendar.java	2016-09-20 03:39:19.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/util/calendar/LocalGregorianCalendar.java	2016-09-24 15:19:13.312801601 +0100
@@ -127,9 +127,15 @@
             calendarProps = (Properties) AccessController.doPrivileged(new PrivilegedExceptionAction() {
                 public Object run() throws IOException {
                     Properties props = new Properties();
-                    try (FileInputStream fis = new FileInputStream(fname)) {
+                    FileInputStream fis = null;
+                    try {
+                        fis = new FileInputStream(fname);
                         props.load(fis);
                     }
+                    finally {
+                        if (fis != null)
+                            fis.close();
+                    }
                     return props;
                 }
             });
diff -Nru openjdk-boot.orig/jdk/src/share/demo/jfc/Font2DTest/RangeMenu.java openjdk-boot/jdk/src/share/demo/jfc/Font2DTest/RangeMenu.java
--- openjdk-boot.orig/jdk/src/share/demo/jfc/Font2DTest/RangeMenu.java	2016-09-20 03:39:19.000000000 +0100
+++ openjdk-boot/jdk/src/share/demo/jfc/Font2DTest/RangeMenu.java	2016-09-24 15:19:13.312801601 +0100
@@ -200,7 +200,7 @@
     }
 
     private static int[][] getUnicodeRanges() {
-        List<Integer> ranges = new ArrayList<>();
+        List<Integer> ranges = new ArrayList<Integer>();
         ranges.add(0);
         Character.UnicodeBlock currentBlock = Character.UnicodeBlock.of(0);
         for (int cp = 0x000001; cp < 0x110000; cp++ ) {
diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java openjdk-boot/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java
--- openjdk-boot.orig/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java	2016-09-20 03:39:19.000000000 +0100
+++ openjdk-boot/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java	2016-09-24 15:19:13.312801601 +0100
@@ -569,11 +569,11 @@
                 public Void run() throws BackingStoreException {
                     Map<String, String> m = new TreeMap<>();
                     long newLastSyncTime = 0;
+                    FileInputStream fis = null;
                     try {
                         newLastSyncTime = prefsFile.lastModified();
-                        try (FileInputStream fis = new FileInputStream(prefsFile)) {
-                            XmlSupport.importMap(fis, m);
-                        }
+                        fis = new FileInputStream(prefsFile);
+                        XmlSupport.importMap(fis, m);
                     } catch(Exception e) {
                         if (e instanceof InvalidPreferencesFormatException) {
                             getLogger().warning("Invalid preferences format in "
@@ -588,6 +588,13 @@
                         } else {
                             throw new BackingStoreException(e);
                         }
+                    } finally {
+                        try {
+                            if (fis != null)
+                                fis.close();
+                        } catch (IOException e) {
+                            throw new BackingStoreException(e);
+                        }
                     }
                     // Attempt succeeded; update state
                     prefsCache = m;
@@ -614,13 +621,14 @@
             AccessController.doPrivileged(
                 new PrivilegedExceptionAction<Void>() {
                 public Void run() throws BackingStoreException {
+                    FileOutputStream fos = null;
                     try {
                         if (!dir.exists() && !dir.mkdirs())
                             throw new BackingStoreException(dir +
                                                              " create failed.");
-                        try (FileOutputStream fos = new FileOutputStream(tmpFile)) {
-                            XmlSupport.exportMap(fos, prefsCache);
-                        }
+
+                        fos = new FileOutputStream(tmpFile);
+                        XmlSupport.exportMap(fos, prefsCache);
                         if (!tmpFile.renameTo(prefsFile))
                             throw new BackingStoreException("Can't rename " +
                             tmpFile + " to " + prefsFile);
@@ -629,6 +637,14 @@
                             throw (BackingStoreException)e;
                         throw new BackingStoreException(e);
                     }
+                    finally {
+                        try {
+                            if (fos != null)
+                                fos.close();
+                        } catch (IOException e) {
+                            throw new BackingStoreException(e);
+                        }
+                    }
                     return null;
                 }
             });
diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java
--- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java	2016-09-20 03:39:19.000000000 +0100
+++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java	2016-09-24 15:19:13.312801601 +0100
@@ -255,9 +255,16 @@
         String fstypes = System.getProperty("java.home") + "/lib/fstypes.properties";
         Path file = Paths.get(fstypes);
         try {
-            try (ReadableByteChannel rbc = Files.newByteChannel(file)) {
+            ReadableByteChannel rbc = null;
+            try {
+                rbc = Files.newByteChannel(file);
                 result.load(Channels.newReader(rbc, "UTF-8"));
             }
+            finally {
+                if (rbc != null) {
+                    rbc.close();
+                }
+            }
         } catch (IOException x) {
         }
         return result;
diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/sun/print/UnixPrintJob.java openjdk-boot/jdk/src/solaris/classes/sun/print/UnixPrintJob.java
--- openjdk-boot.orig/jdk/src/solaris/classes/sun/print/UnixPrintJob.java	2016-09-20 03:39:19.000000000 +0100
+++ openjdk-boot/jdk/src/solaris/classes/sun/print/UnixPrintJob.java	2016-09-24 15:19:13.312801601 +0100
@@ -960,25 +960,38 @@
 
         private void handleProcessFailure(final Process failedProcess,
                 final String[] execCmd, final int result) throws IOException {
-            try (StringWriter sw = new StringWriter();
-                    PrintWriter pw = new PrintWriter(sw)) {
+	    StringWriter sw = null;
+	    PrintWriter pw = null;
+            try {
+		sw = new StringWriter();
+                pw = new PrintWriter(sw);
                 pw.append("error=").append(Integer.toString(result));
                 pw.append(" running:");
                 for (String arg: execCmd) {
                     pw.append(" '").append(arg).append("'");
                 }
-                try (InputStream is = failedProcess.getErrorStream();
-                        InputStreamReader isr = new InputStreamReader(is);
-                        BufferedReader br = new BufferedReader(isr)) {
+		InputStream is = null;
+		InputStreamReader isr = null;
+		BufferedReader br = null;
+                try {
+		    is = failedProcess.getErrorStream();
+                    isr = new InputStreamReader(is);
+                    br = new BufferedReader(isr);
                     while (br.ready()) {
                         pw.println();
                         pw.append("\t\t").append(br.readLine());
                     }
                 } finally {
                     pw.flush();
+		    if (br != null) br.close();
+		    if (isr != null) isr.close();
+		    if (is != null) is.close();
                     throw new IOException(sw.toString());
                 }
-            }
+            } finally {
+		if (pw != null) pw.close();
+		if (sw != null) sw.close();
+	    }
         }
 
         public Object run() {