From 56a8c4e83c976aa841c20095efa8df652b0261ad Mon Sep 17 00:00:00 2001 From: Christopher Vogt Date: Tue, 8 Mar 2016 19:38:27 -0500 Subject: fix duplicate classloader. one is enough --- stage1/classloader.scala | 4 ++-- stage1/resolver.scala | 9 ++++----- 2 files changed, 6 insertions(+), 7 deletions(-) (limited to 'stage1') diff --git a/stage1/classloader.scala b/stage1/classloader.scala index 3293dd1..50e33a2 100644 --- a/stage1/classloader.scala +++ b/stage1/classloader.scala @@ -8,7 +8,7 @@ import scala.collection.immutable.Seq object ClassLoaderCache{ private val cache = NailgunLauncher.classLoaderCache - def classLoader( classpath: ClassPath, parent: ClassLoader )(implicit logger: Logger): ClassLoader + def get( classpath: ClassPath )(implicit logger: Logger): ClassLoader = cache.synchronized{ val lib = new Stage1Lib(logger) val key = classpath.strings.sorted.mkString(":") @@ -17,7 +17,7 @@ object ClassLoaderCache{ cache.get(key) } else { logger.resolver("CACHE MISS: "++key) - val cl = new cbt.URLClassLoader( classpath, parent ) + val cl = new cbt.URLClassLoader( classpath, ClassLoader.getSystemClassLoader ) cache.put( key, cl ) cl } diff --git a/stage1/resolver.scala b/stage1/resolver.scala index 9b3276b..fae5e9d 100644 --- a/stage1/resolver.scala +++ b/stage1/resolver.scala @@ -45,21 +45,20 @@ abstract class Dependency{ _.right.toOption.map(_.exportedClasspath) ) ) - val mavenClassPath = ClassPath.flatten( + val cachedClassPath = ClassPath.flatten( transitiveClassPath.flatMap( _.left.toOption ).par.map(_.exportedClasspath).seq.sortBy(_.string) ) + if(cacheDependencyClassLoader){ new URLClassLoader( exportedClasspath ++ buildClassPath, - ClassLoaderCache.classLoader( - mavenClassPath, new URLClassLoader( mavenClassPath, ClassLoader.getSystemClassLoader ) - ) + ClassLoaderCache.get( cachedClassPath ) ) } else { new URLClassLoader( - exportedClasspath ++ buildClassPath ++ mavenClassPath, ClassLoader.getSystemClassLoader + exportedClasspath ++ buildClassPath ++ cachedClassPath, ClassLoader.getSystemClassLoader ) } } -- cgit v1.2.3