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 89ac3eeeb1d..8fd11ee1286 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 @@ -141,17 +141,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); + } } }