diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/KotlinToolRunner.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/KotlinToolRunner.kt index add34fed3ce..1087d2ebbf9 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/KotlinToolRunner.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/KotlinToolRunner.kt @@ -36,7 +36,7 @@ internal abstract class KotlinToolRunner( open fun checkClasspath(): Unit = check(classpath.isNotEmpty()) { "Classpath of the tool is empty: $displayName" } abstract val isolatedClassLoaderCacheKey: Any - private fun getIsolatedClassLoader(): ClassLoader = isolatedClassLoadersMap.computeIfAbsent(isolatedClassLoaderCacheKey) { + private fun getIsolatedClassLoader(): URLClassLoader = isolatedClassLoadersMap.computeIfAbsent(isolatedClassLoaderCacheKey) { val arrayOfURLs = classpath.map { File(it.absolutePath).toURI().toURL() }.toTypedArray() URLClassLoader(arrayOfURLs, null).apply { setDefaultAssertionStatus(enableAssertions) @@ -112,18 +112,19 @@ internal abstract class KotlinToolRunner( private fun runInProcess(args: List) { val transformedArgs = transformArgs(args) + val isolatedClassLoader = getIsolatedClassLoader() project.logger.info( """|Run in-process tool "$displayName" |Entry point method = $mainClass.$daemonEntryPoint - |Classpath = ${classpath.map { it.absolutePath }.toPrettyString()} + |Classpath = ${isolatedClassLoader.urLs.map { it.file }.toPrettyString()} |Arguments = ${args.toPrettyString()} |Transformed arguments = ${if (transformedArgs == args) "same as arguments" else transformedArgs.toPrettyString()} """.trimMargin() ) try { - val mainClass = getIsolatedClassLoader().loadClass(mainClass) + val mainClass = isolatedClassLoader.loadClass(mainClass) val entryPoint = mainClass.methods.single { it.name == daemonEntryPoint } entryPoint.invoke(null, transformedArgs.toTypedArray()) @@ -138,7 +139,7 @@ internal abstract class KotlinToolRunner( private fun Sequence>.escapeQuotesForWindows() = if (HostManager.hostIsMingw) map { (key, value) -> key.escapeQuotes() to value.escapeQuotes() } else this - private val isolatedClassLoadersMap = ConcurrentHashMap() + private val isolatedClassLoadersMap = ConcurrentHashMap() private fun Map.toPrettyString(): String = buildString { append('[')