Как создать компилятор презентации Scala внутри Ammonite REPL?

Я хочу создать компилятор презентации Scala в Ammonite REPL, однако всегда получаю ошибку Missing dependency 'object scala in compiler mirror'.

Я пробовал обходной путь, упомянутый в объект scala в зеркало компилятора не найдено — программный запуск компилятора Scala . К сожалению, это не работает.

Как заставить это работать?

Welcome to the Ammonite Repl 1.0.0
(Scala 2.12.2 Java 1.8.0_131)
If you like Ammonite, please support our development at www.patreon.com/lihaoyi
@ import scala.tools.nsc.Settings 
import scala.tools.nsc.Settings
@ import scala.tools.nsc.interactive.Global 
import scala.tools.nsc.interactive.Global
@ import scala.tools.nsc.reporters.ConsoleReporter 
import scala.tools.nsc.reporters.ConsoleReporter
@ val settings = new Settings() 
settings: Settings = Settings {
  -d = .
}

@ settings.usejavacp.value = true 

@ val reporter = new ConsoleReporter(settings) 
reporter: ConsoleReporter = scala.tools.nsc.reporters.ConsoleReporter@4a24170b
@ val compiler = new Global(settings, reporter) 
error: error while loading Object, Missing dependency 'object scala in compiler mirror', required by /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/rt.jar(java/lang/Object.class)
scala.reflect.internal.MissingRequirementError: object scala in compiler mirror not found.
  scala.reflect.internal.MissingRequirementError$.signal(MissingRequirementError.scala:17)
  scala.reflect.internal.MissingRequirementError$.notFound(MissingRequirementError.scala:18)
  scala.reflect.internal.Mirrors$RootsBase.$anonfun$getModuleOrClass$4(Mirrors.scala:54)
  scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:54)
  scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:66)
  scala.reflect.internal.Mirrors$RootsBase.getPackage(Mirrors.scala:172)
  scala.reflect.internal.Definitions$DefinitionsClass.ScalaPackage$lzycompute(Definitions.scala:169)
  scala.reflect.internal.Definitions$DefinitionsClass.ScalaPackage(Definitions.scala:169)
  scala.reflect.internal.Definitions$DefinitionsClass.ScalaPackageClass$lzycompute(Definitions.scala:170)
  scala.reflect.internal.Definitions$DefinitionsClass.ScalaPackageClass(Definitions.scala:170)
  scala.reflect.internal.Definitions$DefinitionsClass.init(Definitions.scala:1447)
  scala.tools.nsc.Global$Run.<init>(Global.scala:1149)
  scala.tools.nsc.interactive.Global$TyperRun.<init>(Global.scala:1308)
  scala.tools.nsc.interactive.Global.newTyperRun(Global.scala:1331)
  scala.tools.nsc.interactive.Global.<init>(Global.scala:286)
  ammonite.$sess.cmd6$.<init>(cmd6.sc:1)
  ammonite.$sess.cmd6$.<clinit>(cmd6.sc)

Тот же код работает в официальном Scala REPL.

Welcome to Scala 2.12.2 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_131).
Type in expressions for evaluation. Or try :help.

scala> import scala.tools.nsc.Settings
import scala.tools.nsc.Settings

scala> import scala.tools.nsc.interactive.Global
import scala.tools.nsc.interactive.Global

scala> import scala.tools.nsc.reporters.ConsoleReporter
import scala.tools.nsc.reporters.ConsoleReporter

scala> val settings = new Settings()
settings: scala.tools.nsc.Settings =
Settings {
  -d = .
}

scala> settings.usejavacp.value = true
settings.usejavacp.value: Boolean = true

scala> val reporter = new ConsoleReporter(settings)
reporter: scala.tools.nsc.reporters.ConsoleReporter = scala.tools.nsc.reporters.ConsoleReporter@7eeb38b2

scala> val compiler = new Global(settings, reporter)
compiler: scala.tools.nsc.interactive.Global = scala.tools.nsc.interactive.Global@3b6a4b91

person Yang Bo    schedule 28.07.2017    source источник
comment
Я получаю ту же ошибку при попытке запустить проект мельницы Lihaoyi в среде windows/cygwin. Я не уверен, что может быть общим знаменателем, поскольку похоже, что вы работаете на Mac.   -  person philwalk    schedule 24.02.2018