From c3153dc39f1955a78bbc73ba0bc091aae9e0bb93 Mon Sep 17 00:00:00 2001 From: Sebastien Tardif Date: Tue, 14 Jul 2026 11:57:16 -0400 Subject: [PATCH] Close JarFile when finding main class from archive MainClassFinder.findSingleMainClass(JarFile, ...) does not close the JarFile; the caller owns the resource. FindMainClass passed a newly opened JarFile without closing it, unlike sibling call sites that use try-with-resources. See gh-50949 Signed-off-by: Sebastien Tardif --- .../java/org/springframework/boot/ant/FindMainClass.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/build-plugin/spring-boot-antlib/src/main/java/org/springframework/boot/ant/FindMainClass.java b/build-plugin/spring-boot-antlib/src/main/java/org/springframework/boot/ant/FindMainClass.java index 2ce55cc3a54d..5b55cf7d455d 100644 --- a/build-plugin/spring-boot-antlib/src/main/java/org/springframework/boot/ant/FindMainClass.java +++ b/build-plugin/spring-boot-antlib/src/main/java/org/springframework/boot/ant/FindMainClass.java @@ -71,8 +71,9 @@ public void execute() throws BuildException { if (this.classesRoot.isDirectory()) { return MainClassFinder.findSingleMainClass(this.classesRoot, SPRING_BOOT_APPLICATION_CLASS_NAME); } - return MainClassFinder.findSingleMainClass(new JarFile(this.classesRoot), "/", - SPRING_BOOT_APPLICATION_CLASS_NAME); + try (JarFile jarFile = new JarFile(this.classesRoot)) { + return MainClassFinder.findSingleMainClass(jarFile, "/", SPRING_BOOT_APPLICATION_CLASS_NAME); + } } catch (IOException ex) { throw new BuildException(ex);