将Scala表示编译器与sbt一起使用时出现问题

将Scala表示编译器与sbt一起使用时出现问题,scala,sbt,Scala,Sbt,我正在尝试使用Scala演示文稿编译器,但即使是最简单的示例,在运行时也会遇到问题: import scala.tools.nsc.Settings import scala.tools.nsc.interactive.Global import scala.tools.nsc.reporters.ConsoleReporter object Sandbox extends App { val settings = new Settings() val reporter = ne

我正在尝试使用Scala演示文稿编译器,但即使是最简单的示例,在运行时也会遇到问题:

import scala.tools.nsc.Settings
import scala.tools.nsc.interactive.Global
import scala.tools.nsc.reporters.ConsoleReporter

object Sandbox extends App {

   val settings = new Settings()
   val reporter = new ConsoleReporter(settings)
   val compiler = new Global(settings, reporter)

}
我的build.sbt如下所示:

name := "blah"

version := "0.1"

scalaVersion := "2.12.7"

libraryDependencies += "org.scala-lang" % "scala-compiler" % "2.12.7"
我正在使用SBT1.2.6(也尝试过其他版本)。它编译得很好,但当我运行时,我得到以下结果:

sbt:blah> compile
[success] Total time: 0 s, completed Nov 2, 2018 11:52:01 AM
sbt:blah> run
[info] Running Sandbox
error: error while loading Object, Missing dependency 'object scala in compiler mirror', required by /Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/rt.jar(java/lang/Object.class)
[error] (run-main-0) scala.reflect.internal.MissingRequirementError: object scala in compiler mirror not found.
[error] scala.reflect.internal.MissingRequirementError: object scala in compiler mirror not found.
[error]     at scala.reflect.internal.MissingRequirementError$.signal(MissingRequirementError.scala:17)
[error]     at scala.reflect.internal.MissingRequirementError$.notFound(MissingRequirementError.scala:18)
[error]     at scala.reflect.internal.Mirrors$RootsBase.$anonfun$getModuleOrClass$4(Mirrors.scala:54)
[error]     at scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:54)
[error]     at scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:66)
[error]     at scala.reflect.internal.Mirrors$RootsBase.getPackage(Mirrors.scala:172)
[error]     at scala.reflect.internal.Definitions$DefinitionsClass.ScalaPackage$lzycompute(Definitions.scala:189)
[error]     at scala.reflect.internal.Definitions$DefinitionsClass.ScalaPackage(Definitions.scala:189)
[error]     at scala.reflect.internal.Definitions$DefinitionsClass.ScalaPackageClass$lzycompute(Definitions.scala:190)
[error]     at scala.reflect.internal.Definitions$DefinitionsClass.ScalaPackageClass(Definitions.scala:190)
[error]     at scala.reflect.internal.Definitions$DefinitionsClass.init(Definitions.scala:1455)
[error]     at scala.tools.nsc.Global$Run.<init>(Global.scala:1179)
[error]     at scala.tools.nsc.interactive.Global$TyperRun.<init>(Global.scala:1314)
[error]     at scala.tools.nsc.interactive.Global.newTyperRun(Global.scala:1337)
[error]     at scala.tools.nsc.interactive.Global.<init>(Global.scala:286)
[error]     at Sandbox$.delayedEndpoint$Sandbox$1(Sandbox.scala:9)
[error]     at Sandbox$delayedInit$body.apply(Sandbox.scala:5)
[error]     at scala.Function0.apply$mcV$sp(Function0.scala:34)
[error]     at scala.Function0.apply$mcV$sp$(Function0.scala:34)
[error]     at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
[error]     at scala.App.$anonfun$main$1$adapted(App.scala:76)
[error]     at scala.collection.immutable.List.foreach(List.scala:388)
[error]     at scala.App.main(App.scala:76)
[error]     at scala.App.main$(App.scala:74)
[error]     at Sandbox$.main(Sandbox.scala:5)
[error]     at Sandbox.main(Sandbox.scala)
[error]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[error]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error]     at java.lang.reflect.Method.invoke(Method.java:498)
[error] Nonzero exit code: 1
[error] (Compile / run) Nonzero exit code: 1
[error] Total time: 1 s, completed Nov 2, 2018 11:52:04 AM
sbt:blah>编译
[成功]总时间:0秒,完成时间2018年11月2日上午11:52:01
sbt:blah>run
[信息]运行沙箱
错误:加载对象时出错,缺少/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/rt.jar(Java/lang/Object.class)所需的依赖项“编译器镜像中的对象scala”
[错误](run-main-0)scala.reflect.internal.MissingRequirementError:在编译器镜像中找不到对象scala。
[错误]scala.reflect.internal.MissingRequirementError:在编译器镜像中找不到对象scala。
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)处的[error]
scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:66)处的[error]
scala.reflect.internal.Mirrors$RootsBase.getPackage(Mirrors.scala:172)处的[error]
[错误]位于scala.reflect.internal.Definitions$DefinitionsClass.ScalaPackage$lzycompute(Definitions.scala:189)
[错误]位于scala.reflect.internal.Definitions$DefinitionsClass.ScalaPackage(Definitions.scala:189)
[错误]位于scala.reflect.internal.Definitions$DefinitionsClass.ScalaPackageClass$lzycompute(Definitions.scala:190)
scala.reflect.internal.Definitions$DefinitionsClass.ScalaPackageClass(Definitions.scala:190)处的[错误]
scala.reflect.internal.Definitions$DefinitionsClass.init(Definitions.scala:1455)处的[error]
[错误]位于scala.tools.nsc.Global$Run。(Global.scala:1179)
[错误]位于scala.tools.nsc.interactive.Global$TyperRun.(Global.scala:1314)
[错误]位于scala.tools.nsc.interactive.Global.newTyperRun(Global.scala:1337)
[错误]位于scala.tools.nsc.interactive.Global.(Global.scala:286)
[错误]位于Sandbox$.delayedEndpoint$Sandbox$1(Sandbox.scala:9)
[错误]位于Sandbox$delayedInit$body.apply(Sandbox.scala:5)
在scala.Function0.apply$mcV$sp处出现[错误](Function0.scala:34)
[错误]位于scala.Function0.apply$mcV$sp$(Function0.scala:34)
在scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)处出现[错误]
[错误]位于scala.App.$anonfun$main$1$adapted(App.scala:76)
scala.collection.immutable.List.foreach(List.scala:388)处的[error]
[错误]位于scala.App.main(App.scala:76)
[错误]位于scala.App.main$(App.scala:74)
[错误]位于Sandbox$.main(Sandbox.scala:5)
[错误]位于Sandbox.main(Sandbox.scala)
sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处的[错误]
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)处出现[错误]
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)处的[error]
java.lang.reflect.Method.invoke(Method.java:498)处的[error]
[错误]非零退出代码:1
[错误](编译/运行)非零退出代码:1
[错误]总时间:1秒,已完成2018年11月2日上午11:52:04
如您所见,我将Scala 2.12.7与Java jdk1.8.0_181一起使用