diff --git a/main-command/src/main/scala/sbt/internal/classpath/ClassLoaderCache.scala b/main-command/src/main/scala/sbt/internal/classpath/ClassLoaderCache.scala index 652cb185d..41a5ae7e9 100644 --- a/main-command/src/main/scala/sbt/internal/classpath/ClassLoaderCache.scala +++ b/main-command/src/main/scala/sbt/internal/classpath/ClassLoaderCache.scala @@ -3,7 +3,7 @@ package sbt.internal.classpath import java.io.File import java.lang.management.ManagementFactory import java.lang.ref.{ Reference, ReferenceQueue, SoftReference } -import java.net.URLClassLoader +import java.net.{ URL, URLClassLoader } import java.util.concurrent.atomic.AtomicInteger import sbt.internal.inc.classpath.{ @@ -107,7 +107,13 @@ private[sbt] class ClassLoaderCache( else ClassLoaderReference.apply private[this] val cleanupThread = new CleanupThread(ClassLoaderCache.threadID.getAndIncrement()) private[this] val lock = new Object + private class WrappedLoader(parent: ClassLoader) extends URLClassLoader(Array.empty, parent) { + // This is to make dotty work which extracts the URLs from the loader + override def getURLs: Array[URL] = parent match { + case u: URLClassLoader => u.getURLs + case _ => Array.empty + } override def toString: String = s"WrappedLoader($parent)" } private def close(classLoader: ClassLoader): Unit = classLoader match {