From 6d9fd88ae9b0e228c42640b40db7bb894476a84e Mon Sep 17 00:00:00 2001 From: Sebastien Tardif Date: Fri, 29 May 2026 14:37:09 -0700 Subject: [PATCH] Close URLClassLoader in ArchitectureCheck See gh-50626 Signed-off-by: Sebastien Tardif --- .../build/architecture/ArchitectureCheck.java | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitectureCheck.java b/buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitectureCheck.java index 50100af51d9..c6ce471c0b4 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitectureCheck.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitectureCheck.java @@ -132,17 +132,18 @@ public abstract class ArchitectureCheck extends DefaultTask { private void withCompileClasspath(Callable callable) throws Exception { ClassLoader previous = Thread.currentThread().getContextClassLoader(); - try { - List urls = new ArrayList<>(); - for (File file : getCompileClasspath().getFiles()) { - urls.add(file.toURI().toURL()); - } - ClassLoader classLoader = new URLClassLoader(urls.toArray(new URL[0]), getClass().getClassLoader()); - Thread.currentThread().setContextClassLoader(classLoader); - callable.call(); + List urls = new ArrayList<>(); + for (File file : getCompileClasspath().getFiles()) { + urls.add(file.toURI().toURL()); } - finally { - Thread.currentThread().setContextClassLoader(previous); + try (URLClassLoader classLoader = new URLClassLoader(urls.toArray(new URL[0]), getClass().getClassLoader())) { + Thread.currentThread().setContextClassLoader(classLoader); + try { + callable.call(); + } + finally { + Thread.currentThread().setContextClassLoader(previous); + } } }