diff --git a/compiler/cli/cli-runner/src/org/jetbrains/kotlin/runner/runners.kt b/compiler/cli/cli-runner/src/org/jetbrains/kotlin/runner/runners.kt index 417a94bd21b..5ba932c9848 100644 --- a/compiler/cli/cli-runner/src/org/jetbrains/kotlin/runner/runners.kt +++ b/compiler/cli/cli-runner/src/org/jetbrains/kotlin/runner/runners.kt @@ -77,13 +77,9 @@ class MainClassRunner(override val className: String) : AbstractRunner() { class JarRunner(private val path: String) : AbstractRunner() { override val className: String = try { - val jar = JarFile(path) - try { + JarFile(path).use { jar -> jar.manifest.mainAttributes.getValue(Attributes.Name.MAIN_CLASS) } - finally { - jar.close() - } } catch (e: IOException) { throw RunnerException("could not read manifest from " + path + ": " + e.message) diff --git a/compiler/util/src/org/jetbrains/kotlin/utils/LibraryUtils.kt b/compiler/util/src/org/jetbrains/kotlin/utils/LibraryUtils.kt index d9b793cd25d..e45d61495c8 100644 --- a/compiler/util/src/org/jetbrains/kotlin/utils/LibraryUtils.kt +++ b/compiler/util/src/org/jetbrains/kotlin/utils/LibraryUtils.kt @@ -69,13 +69,9 @@ object LibraryUtils { if (!library.canRead()) return null try { - val jarFile = JarFile(library) - try { + JarFile(library).use { jarFile -> return jarFile.manifest } - finally { - jarFile.close() - } } catch (ignored: IOException) { return null diff --git a/generators/infrastructure/build-protobuf-lite.kts b/generators/infrastructure/build-protobuf-lite.kts index 851412536ab..13761ae4862 100644 --- a/generators/infrastructure/build-protobuf-lite.kts +++ b/generators/infrastructure/build-protobuf-lite.kts @@ -32,16 +32,11 @@ fun main(args: Array) { fun loadAllFromJar(file: File): Map> { val result = hashMapOf>() - val jar = JarFile(file) - try { + JarFile(file).use { jar -> for (jarEntry in jar.entries()) { result[jarEntry.name] = Pair(jarEntry, jar.getInputStream(jarEntry).readBytes()) } } - finally { - // Yes, JarFile does not extend Closeable on JDK 6 so we can't use "use" here - jar.close() - } return result } diff --git a/generators/infrastructure/check-library-abi-version.kts b/generators/infrastructure/check-library-abi-version.kts index c3f0815c004..0354592886a 100644 --- a/generators/infrastructure/check-library-abi-version.kts +++ b/generators/infrastructure/check-library-abi-version.kts @@ -47,8 +47,7 @@ fun loadClassVersions(bytes: ByteArray): Pair, List>? { } fun loadVersions(library: File): String { - val jarFile = JarFile(library) - try { + JarFile(library).use { jarFile -> for (entry in jarFile.entries()) { if (entry.name.endsWith(".class")) { val classBytes = jarFile.getInputStream(entry).readBytes() @@ -59,10 +58,6 @@ fun loadVersions(library: File): String { } } } - finally { - // Yes, JarFile does not extend Closeable on JDK 6 so we can't use "use" here - jarFile.close() - } error("No Kotlin classes were found in $library") } diff --git a/generators/infrastructure/strip-kotlin-annotations.kts b/generators/infrastructure/strip-kotlin-annotations.kts index 0be155b87e8..9b010b48d64 100644 --- a/generators/infrastructure/strip-kotlin-annotations.kts +++ b/generators/infrastructure/strip-kotlin-annotations.kts @@ -19,7 +19,6 @@ import java.io.BufferedOutputStream import java.io.File import java.io.FileOutputStream import java.util.jar.JarFile -import java.util.zip.ZipEntry import java.util.zip.ZipOutputStream /** @@ -64,8 +63,7 @@ fun main(args: Array) { ZipOutputStream(BufferedOutputStream(FileOutputStream(outFile))).use { outJar -> - val inJar = JarFile(inFile) - try { + JarFile(inFile).use { inJar -> for (entry in inJar.entries()) { val inBytes = inJar.getInputStream(entry).readBytes() val outBytes = transform(entry.name, inBytes) @@ -80,10 +78,6 @@ fun main(args: Array) { outJar.closeEntry() } } - finally { - // Yes, JarFile does not extend Closeable on JDK 6 so we can't use "use" here - inJar.close() - } } println("Output written to $outFile")