diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLITool.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLITool.kt
index fc464699c15..f9112299173 100644
--- a/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLITool.kt
+++ b/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLITool.kt
@@ -29,6 +29,8 @@ import org.jetbrains.kotlin.cli.jvm.compiler.CompileEnvironmentException
import org.jetbrains.kotlin.config.KotlinCompilerVersion
import org.jetbrains.kotlin.config.Services
import java.io.PrintStream
+import java.net.URL
+import java.net.URLConnection
import java.util.function.Predicate
abstract class CLITool {
@@ -79,6 +81,8 @@ abstract class CLITool {
}
fun exec(messageCollector: MessageCollector, services: Services, arguments: A): ExitCode {
+ disableURLConnectionCaches()
+
printVersionIfNeeded(messageCollector, arguments)
val fixedMessageCollector = if (arguments.suppressWarnings && !arguments.allWarningsAsErrors) {
@@ -92,6 +96,16 @@ abstract class CLITool {
return execImpl(fixedMessageCollector, services, arguments)
}
+ private fun disableURLConnectionCaches() {
+ // We disable caches to avoid problems with compiler under daemon, see https://youtrack.jetbrains.com/issue/KT-22513
+ // For some inexplicable reason, URLConnection.setDefaultUseCaches is an instance method modifying a static field,
+ // so we have to create a dummy instance to call that method
+
+ object : URLConnection(URL("file:.")) {
+ override fun connect() = throw UnsupportedOperationException()
+ }.defaultUseCaches = false
+ }
+
// Used in kotlin-maven-plugin (KotlinCompileMojoBase)
protected abstract fun execImpl(messageCollector: MessageCollector, services: Services, arguments: A): ExitCode