From 8b6d8bbdbf984206c9f7945cb4f8b521475ffdef Mon Sep 17 00:00:00 2001 From: Dmitry Kryukov Date: Thu, 11 Jul 2024 13:48:45 -0700 Subject: [PATCH] Use try-with-resources to close a `URLClassLoader`. Closes https://github.com/google/guava/pull/7301. RELNOTES=n/a PiperOrigin-RevId: 651523673 --- .../base/FinalizableReferenceQueue.java | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/guava/src/com/google/common/base/FinalizableReferenceQueue.java b/guava/src/com/google/common/base/FinalizableReferenceQueue.java index 7f1afbb3904d..30f7781e62ce 100644 --- a/guava/src/com/google/common/base/FinalizableReferenceQueue.java +++ b/guava/src/com/google/common/base/FinalizableReferenceQueue.java @@ -285,17 +285,16 @@ static class DecoupledLoader implements FinalizerLoader { @Override @CheckForNull public Class loadFinalizer() { - try { - /* - * We use URLClassLoader because it's the only concrete class loader implementation in the - * JDK. If we used our own ClassLoader subclass, Finalizer would indirectly reference this - * class loader: - * - * Finalizer.class -> CustomClassLoader -> CustomClassLoader.class -> This class loader - * - * System class loader will (and must) be the parent. - */ - ClassLoader finalizerLoader = newLoader(getBaseUrl()); + /* + * We use URLClassLoader because it's the only concrete class loader implementation in the + * JDK. If we used our own ClassLoader subclass, Finalizer would indirectly reference this + * class loader: + * + * Finalizer.class -> CustomClassLoader -> CustomClassLoader.class -> This class loader + * + * System class loader will (and must) be the parent. + */ + try (URLClassLoader finalizerLoader = newLoader(getBaseUrl())) { return finalizerLoader.loadClass(FINALIZER_CLASS_NAME); } catch (Exception e) { logger.log(Level.WARNING, LOADING_ERROR, e);