diff options
Diffstat (limited to 'core/src/mill/util/ClassLoader.scala')
-rw-r--r-- | core/src/mill/util/ClassLoader.scala | 11 |
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) } } } |