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 50100af51d92..c6ce471c0b4c 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 @@ private Stream evaluate(JavaClasses javaClasses) { 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); + } } }