From 468334f14215961c4bb576c9a3423fc31197983f Mon Sep 17 00:00:00 2001 From: Ethan Atkins Date: Sat, 25 May 2019 17:45:15 -0700 Subject: [PATCH] Don't use anonymous URLClassLoaders This makes debugging a bit easier in the eclipse memory analyzer tool since we get a more specific classloader type than URLClassLoader and by giving the class a meaningful name, we can tell from where it originated. --- main/src/main/scala/sbt/Defaults.scala | 2 +- main/src/main/scala/sbt/internal/ClassLoaders.scala | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index f8774dff9..4f83c85f3 100755 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -773,7 +773,7 @@ object Defaults extends BuildCommon { class ScalaLoader extends URLClassLoader(allJars.map(_.toURI.toURL).toArray, libraryLoader) val fullLoader = classLoaderCache.cachedCustomClassloader( allJars.toList, - () => new URLClassLoader(allJars.map(_.toURI.toURL).toArray, libraryLoader) + () => new ScalaLoader ) new ScalaInstance( version, diff --git a/main/src/main/scala/sbt/internal/ClassLoaders.scala b/main/src/main/scala/sbt/internal/ClassLoaders.scala index 396d2da31..67963eb80 100644 --- a/main/src/main/scala/sbt/internal/ClassLoaders.scala +++ b/main/src/main/scala/sbt/internal/ClassLoaders.scala @@ -230,10 +230,12 @@ private[sbt] object ClassLoaders { } else parent } + private[this] class FlatLoader(classpath: Seq[File], parent: ClassLoader) + extends URLClassLoader(classpath.map(_.toURI.toURL).toArray, parent) { + override def toString: String = + s"FlatClassLoader(parent = $interfaceLoader, jars =\n${classpath.mkString("\n")}\n)" + } // helper methods private def flatLoader(classpath: Seq[File], parent: ClassLoader): ClassLoader = - new URLClassLoader(classpath.map(_.toURI.toURL).toArray, parent) { - override def toString: String = - s"FlatClassLoader(parent = $interfaceLoader, jars =\n${classpath.mkString("\n")}\n)" - } + new FlatLoader(classpath, parent) }