mirror of https://github.com/sbt/sbt.git
Use named loader for ScalaLibrary
I'd already made a ScalaReflect loader and it makes sense to have a ScalaLibraryClassLoader as well.
This commit is contained in:
parent
af0cfc9740
commit
66d3d8d504
|
|
@ -0,0 +1,34 @@
|
|||
/*
|
||||
* sbt
|
||||
* Copyright 2011 - 2018, Lightbend, Inc.
|
||||
* Copyright 2008 - 2010, Mark Harrah
|
||||
* Licensed under Apache License 2.0 (see LICENSE)
|
||||
*/
|
||||
|
||||
package sbt.internal;
|
||||
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
|
||||
final class ScalaLibraryClassLoader extends URLClassLoader {
|
||||
static {
|
||||
ClassLoader.registerAsParallelCapable();
|
||||
}
|
||||
|
||||
private final URL[] jars;
|
||||
|
||||
ScalaLibraryClassLoader(final URL[] jars, final ClassLoader parent) {
|
||||
super(jars, parent);
|
||||
this.jars = jars;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
final StringBuilder builder = new StringBuilder();
|
||||
for (int i = 0; i < jars.length; ++ i) {
|
||||
builder.append(jars[i].toString());
|
||||
if (i < jars.length - 2) builder.append(", ");
|
||||
}
|
||||
return "ScalaLibraryClassLoader(" + builder + " parent = " + getParent() + ")";
|
||||
}
|
||||
}
|
||||
|
|
@ -133,7 +133,13 @@ private[sbt] object ClassLoaders {
|
|||
case _: AllLibraryJars => true
|
||||
case _ => false
|
||||
}
|
||||
val scalaLibraryLayer = layer(si.libraryJars, interfaceLoader, cache, resources, tmp)
|
||||
val scalaLibraryLayer = {
|
||||
cache.apply(
|
||||
si.libraryJars.map(j => j -> IO.getModifiedTimeOrZero(j)).toList,
|
||||
interfaceLoader,
|
||||
() => new ScalaLibraryClassLoader(si.libraryJars.map(_.toURI.toURL), interfaceLoader)
|
||||
)
|
||||
}
|
||||
val cpFiles = fullCP.map(_._1)
|
||||
|
||||
val scalaReflectJar = allDependencies.collectFirst {
|
||||
|
|
|
|||
Loading…
Reference in New Issue