Close URLClassLoaders after getting bridge

The ZincComponentCompilerSpec was fail with a metaspace related error
when run locally with a recent version of sbt on my machine. I was able
to stop these failures by closing the URLClassLoader instances used to
compile the bridge.
This commit is contained in:
Ethan Atkins 2019-04-30 12:16:33 -07:00
parent 31a3ad61c9
commit f4a2bcd0ce
1 changed files with 3 additions and 0 deletions

View File

@ -8,6 +8,7 @@
package sbt.internal.inc package sbt.internal.inc
import java.io.File import java.io.File
import java.net.URLClassLoader
import sbt.io.IO import sbt.io.IO
import sbt.io.syntax._ import sbt.io.syntax._
@ -59,6 +60,8 @@ abstract class IvyBridgeProviderSpecification extends FlatSpec with Matchers {
val provider = getZincProvider(bridge1, targetDir, log) val provider = getZincProvider(bridge1, targetDir, log)
val scalaInstance = provider.fetchScalaInstance(scalaVersion, log) val scalaInstance = provider.fetchScalaInstance(scalaVersion, log)
val bridge = provider.fetchCompiledBridge(scalaInstance, log) val bridge = provider.fetchCompiledBridge(scalaInstance, log)
scalaInstance.loader.asInstanceOf[URLClassLoader].close()
scalaInstance.loaderLibraryOnly.asInstanceOf[URLClassLoader].close()
val target = targetDir / s"target-bridge-$scalaVersion.jar" val target = targetDir / s"target-bridge-$scalaVersion.jar"
IO.copyFile(bridge, target) IO.copyFile(bridge, target)
target target