diff --git a/node-api/src/main/kotlin/net/corda/nodeapi/internal/ClassloaderUtils.kt b/node-api/src/main/kotlin/net/corda/nodeapi/internal/ClassloaderUtils.kt index 49739303a1..124cda119d 100644 --- a/node-api/src/main/kotlin/net/corda/nodeapi/internal/ClassloaderUtils.kt +++ b/node-api/src/main/kotlin/net/corda/nodeapi/internal/ClassloaderUtils.kt @@ -24,10 +24,9 @@ fun scanJarForContracts(cordappJarPath: String): List { val contracts = (scanResult.getNamesOfClassesImplementing(Contract::class.qualifiedName) ).distinct() // Only keep instantiable contracts - val classLoader = URLClassLoader(arrayOf(File(cordappJarPath).toURL()), currentClassLoader) - val concreteContracts = contracts.map(classLoader::loadClass).filter { !it.isInterface && !Modifier.isAbstract(it.modifiers) } - classLoader.close() - return concreteContracts.map { it.name } + return URLClassLoader(arrayOf(File(cordappJarPath).toURL()), currentClassLoader).use { + contracts.map(it::loadClass).filter { !it.isInterface && !Modifier.isAbstract(it.modifiers) } + }.map { it.name } } fun withContractsInJar(jarInputStream: InputStream, withContracts: (List, InputStream) -> T): T {