From 7d07bbabbf89731fb8988553d0612e555391af92 Mon Sep 17 00:00:00 2001 From: Ethan Atkins Date: Thu, 30 Apr 2020 20:04:58 -0700 Subject: [PATCH] Fix DefinesClass implementation for jdk > 8 When trying to use any jdk > 8 with the latest sbt, sbt will die in some projects because it tries to call Locate.defineClass on rt.jar, which is represented with a DummyVirtualFile and causes a crash. --- main/src/main/scala/sbt/Defaults.scala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index 36aaeef43..9c13e176b 100755 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -179,7 +179,8 @@ object Defaults extends BuildCommon { classpathEntryDefinesClass := { val converter = fileConverter.value val f = FileValueCache({ x: NioPath => - Locate.definesClass(converter.toVirtualFile(x)) + if (x.getFileName.toString != "rt.jar") Locate.definesClass(converter.toVirtualFile(x)) + else ((_: String) => false): DefinesClass }).get; { (x: File) => f(x.toPath)