summaryrefslogtreecommitdiff
path: root/core/src/mill/util/ClassLoader.scala
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/mill/util/ClassLoader.scala')
-rw-r--r--core/src/mill/util/ClassLoader.scala11
1 files changed, 9 insertions, 2 deletions
diff --git a/core/src/mill/util/ClassLoader.scala b/core/src/mill/util/ClassLoader.scala
index a1b42158..b53150c2 100644
--- a/core/src/mill/util/ClassLoader.scala
+++ b/core/src/mill/util/ClassLoader.scala
@@ -5,7 +5,9 @@ import java.net.{URL, URLClassLoader}
import io.github.retronym.java9rtexport.Export
object ClassLoader {
- def create(urls: Seq[URL], parent: java.lang.ClassLoader): URLClassLoader = {
+ def create(urls: Seq[URL],
+ parent: java.lang.ClassLoader)
+ (implicit ctx: Ctx.Home): URLClassLoader = {
val cl = new URLClassLoader(urls.toArray, parent)
if (!ammonite.util.Util.java9OrAbove) return cl
try {
@@ -13,7 +15,12 @@ object ClassLoader {
cl
} catch {
case _: ClassNotFoundException =>
- new URLClassLoader((urls ++ Some(Export.export().toURI.toURL)).toArray, parent)
+ val path = ctx.home
+ val rtFile = new java.io.File(path.toIO, s"rt-${System.getProperty("java.version")}.jar")
+ if (!rtFile.exists) {
+ java.nio.file.Files.copy(Export.export().toPath, rtFile.toPath)
+ }
+ new URLClassLoader((urls ++ Some(rtFile.toURI.toURL)).toArray, parent)
}
}
}