为什么 sbt 构建失败并显示“MissingRequirementError: object scala.runtime in compiler mirror not found.”?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/16329566/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Why does sbt build fail with "MissingRequirementError: object scala.runtime in compiler mirror not found."?
提问by Maurício Linhares
I have this multi-module build configurationthat I'm trying to get working, but whenever I try to compile the project it fails with the following error:
我有这个多模块构建配置,我正在尝试使用它,但是每当我尝试编译项目时,它都会失败并出现以下错误:
? postgresql-netty git:(multi-module) sbt clean compile
[info] Loading global plugins from /Users/mauricio/.sbt/plugins
[info] Loading project definition from /Users/mauricio/projects/scala/postgresql-netty/project
[info] Set current project to db-async-base (in build file:/Users/mauricio/projects/scala/postgresql-netty/)
[success] Total time: 0 s, completed May 1, 2013 11:18:29 PM
[info] Updating {file:/Users/mauricio/projects/scala/postgresql-netty/}db-async-common...
[info] Updating {file:/Users/mauricio/projects/scala/postgresql-netty/}db-async-base...
[info] Resolving org.specs2#scalaz-core_2.10;7.0.0 ...
[info] Done updating.
[info] Resolving org.scala-lang#scala-library;2.10.1 ...
[info] Done updating.
[info] Updating {file:/Users/mauricio/projects/scala/postgresql-netty/}postgresql-async...
[info] Resolving ch.qos.logback#logback-classic;1.0.9 ...
[info] Compiling 16 Scala sources to /Users/mauricio/projects/scala/postgresql-netty/db-async-common/target/scala-2.10/classes...
[info] Resolving org.specs2#scalaz-core_2.10;7.0.0 ...
[info] Done updating.
scala.reflect.internal.MissingRequirementError: object scala.runtime in compiler mirror not found.
at scala.reflect.internal.MissingRequirementError$.signal(MissingRequirementError.scala:16)
at scala.reflect.internal.MissingRequirementError$.notFound(MissingRequirementError.scala:17)
at scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:48)
at scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:40)
at scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:61)
at scala.reflect.internal.Mirrors$RootsBase.getPackage(Mirrors.scala:172)
at scala.reflect.internal.Mirrors$RootsBase.getRequiredPackage(Mirrors.scala:175)
at scala.reflect.internal.Definitions$DefinitionsClass.RuntimePackage$lzycompute(Definitions.scala:181)
at scala.reflect.internal.Definitions$DefinitionsClass.RuntimePackage(Definitions.scala:181)
at scala.reflect.internal.Definitions$DefinitionsClass.RuntimePackageClass$lzycompute(Definitions.scala:182)
at scala.reflect.internal.Definitions$DefinitionsClass.RuntimePackageClass(Definitions.scala:182)
at scala.reflect.internal.Definitions$DefinitionsClass.AnnotationDefaultAttr$lzycompute(Definitions.scala:1015)
at scala.reflect.internal.Definitions$DefinitionsClass.AnnotationDefaultAttr(Definitions.scala:1014)
at scala.reflect.internal.Definitions$DefinitionsClass.syntheticCoreClasses$lzycompute(Definitions.scala:1144)
at scala.reflect.internal.Definitions$DefinitionsClass.syntheticCoreClasses(Definitions.scala:1143)
at scala.reflect.internal.Definitions$DefinitionsClass.symbolsNotPresentInBytecode$lzycompute(Definitions.scala:1187)
at scala.reflect.internal.Definitions$DefinitionsClass.symbolsNotPresentInBytecode(Definitions.scala:1187)
at scala.reflect.internal.Definitions$DefinitionsClass.init(Definitions.scala:1252)
at scala.tools.nsc.Global$Run.<init>(Global.scala:1289)
at xsbt.CachedCompiler0.run(CompilerInterface.scala:87)
at xsbt.CachedCompiler0.run(CompilerInterface.scala:72)
at xsbt.CompilerInterface.run(CompilerInterface.scala:27)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at sbt.compiler.AnalyzingCompiler.call(AnalyzingCompiler.scala:73)
at sbt.compiler.AnalyzingCompiler.compile(AnalyzingCompiler.scala:35)
at sbt.compiler.AnalyzingCompiler.compile(AnalyzingCompiler.scala:29)
at sbt.compiler.AggressiveCompile$$anonfun$$anonfun$compileScala.apply$mcV$sp(AggressiveCompile.scala:71)
at sbt.compiler.AggressiveCompile$$anonfun$$anonfun$compileScala.apply(AggressiveCompile.scala:71)
at sbt.compiler.AggressiveCompile$$anonfun$$anonfun$compileScala.apply(AggressiveCompile.scala:71)
at sbt.compiler.AggressiveCompile.sbt$compiler$AggressiveCompile$$timed(AggressiveCompile.scala:101)
at sbt.compiler.AggressiveCompile$$anonfun.compileScala(AggressiveCompile.scala:70)
at sbt.compiler.AggressiveCompile$$anonfun.apply(AggressiveCompile.scala:88)
at sbt.compiler.AggressiveCompile$$anonfun.apply(AggressiveCompile.scala:60)
at sbt.inc.IncrementalCompile$$anonfun$doCompile.apply(Compile.scala:24)
at sbt.inc.IncrementalCompile$$anonfun$doCompile.apply(Compile.scala:22)
at sbt.inc.Incremental$.cycle(Incremental.scala:52)
at sbt.inc.Incremental$.compile(Incremental.scala:29)
at sbt.inc.IncrementalCompile$.apply(Compile.scala:20)
at sbt.compiler.AggressiveCompile.compile2(AggressiveCompile.scala:96)
at sbt.compiler.AggressiveCompile.compile1(AggressiveCompile.scala:44)
at sbt.compiler.AggressiveCompile.apply(AggressiveCompile.scala:31)
at sbt.Compiler$.apply(Compiler.scala:79)
at sbt.Defaults$$anonfun$compileTask.apply(Defaults.scala:574)
at sbt.Defaults$$anonfun$compileTask.apply(Defaults.scala:574)
at sbt.Scoped$$anonfun$hf2.apply(Structure.scala:578)
at sbt.Scoped$$anonfun$hf2.apply(Structure.scala:578)
at scala.Function1$$anonfun$compose.apply(Function1.scala:49)
at sbt.Scoped$Reduced$$anonfun$combine$$anonfun$apply.apply(Structure.scala:311)
at sbt.Scoped$Reduced$$anonfun$combine$$anonfun$apply.apply(Structure.scala:311)
at sbt.$tilde$greater$$anonfun$$u2219.apply(TypeFunctions.scala:41)
at sbt.std.Transform$$anon.work(System.scala:71)
at sbt.Execute$$anonfun$submit$$anonfun$apply.apply(Execute.scala:232)
at sbt.Execute$$anonfun$submit$$anonfun$apply.apply(Execute.scala:232)
at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:18)
at sbt.Execute.work(Execute.scala:238)
at sbt.Execute$$anonfun$submit.apply(Execute.scala:232)
at sbt.Execute$$anonfun$submit.apply(Execute.scala:232)
at sbt.ConcurrentRestrictions$$anon$$anonfun.apply(ConcurrentRestrictions.scala:160)
at sbt.CompletionService$$anon.call(CompletionService.scala:30)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
[error] (db-async-common/compile:compile) scala.reflect.internal.MissingRequirementError: object scala.runtime in compiler mirror not found.
[error] Total time: 4 s, completed May 1, 2013 11:18:33 PM
Any idea what this is and how can I fix it?
知道这是什么,我该如何解决?
采纳答案by Maurício Linhares
Adding scala-libraryas a project dependency:
添加scala-library为项目依赖项:
"org.scala-lang" % "scala-library" % "2.10.1"
Did the trick. Still not sure why this is necessary now but wasn't before.
成功了。仍然不确定为什么现在需要这样做,但以前不需要。
回答by Jacek Laskowski
The issue is when you clear all the project dependencies up while setting yours, i.e. using :=not ++=or +=to add dependencies to libraryDependenciesin a build definition, say in build.sbt:
问题是当您在设置项目依赖项时清除所有项目依赖项时,即使用:=not++=或在构建定义中+=添加依赖项libraryDependencies,例如build.sbt:
libraryDependencies := Dependencies.microservice
With :=all the current dependencies that sbt sets upfront in libraryDependenciesare cleared out and the only available dependencies are these from Dependencies.microservice(as in the above example).
与:=所有当前的依赖关系SBT集前期中libraryDependencies被清除出来,唯一可用的依赖关系是从这些Dependencies.microservice(如在上面的例子)。
Adding up "org.scala-lang" % "scala-library" % "2.10.1"(or whatever version of scalaVersionyou use) is just a workaround for clearing out the already-properly-initialized libraryDependenciessetting.
添加"org.scala-lang" % "scala-library" % "2.10.1"(或scalaVersion您使用的任何版本)只是清除已经正确初始化的libraryDependencies设置的一种解决方法。
It's easily to reproduce with the following build definition - build.sbt:
使用以下构建定义很容易重现 - build.sbt:
libraryDependencies := Seq()
Trying to compile Scala files results in the error - note show libraryDependencies:
尝试编译 Scala 文件会导致错误 - 注意show libraryDependencies:
? clear-library-dependencies xsbt
JAVA_HOME=/Library/Java/JavaVirtualMachines/java8/Contents/Home
SBT_OPTS= -Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -Dfile.encoding=UTF-8
[info] Loading global plugins from /Users/jacek/.sbt/0.13/plugins
[info] Updating {file:/Users/jacek/.sbt/0.13/plugins/}global-plugins...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Set current project to clear-library-dependencies (in build file:/Users/jacek/dev/sandbox/clear-library-dependencies/)
[clear-library-dependencies]> show libraryDependencies
[info] List()
[clear-library-dependencies]> compile
[info] Updating {file:/Users/jacek/dev/sandbox/clear-library-dependencies/}clear-library-dependencies...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Compiling 1 Scala source to /Users/jacek/dev/sandbox/clear-library-dependencies/target/scala-2.10/classes...
[trace] Stack trace suppressed: run last compile:compileIncremental for the full output.
[error] (compile:compileIncremental) scala.reflect.internal.MissingRequirementError: object scala.runtime in compiler mirror not found.
[error] Total time: 0 s, completed Feb 3, 2015 10:36:08 PM
Change the build to the following (not usable, but just to show the point):
将构建更改为以下内容(不可用,但只是为了说明这一点):
libraryDependencies ++= Seq()
The result's going to be as follows:
结果将如下所示:
[clear-library-dependencies]> reload
[info] Loading global plugins from /Users/jacek/.sbt/0.13/plugins
[info] Set current project to clear-library-dependencies (in build file:/Users/jacek/dev/sandbox/clear-library-dependencies/)
[clear-library-dependencies]> show libraryDependencies
[info] List(org.scala-lang:scala-library:2.10.4)
[clear-library-dependencies]> compile
[info] Updating {file:/Users/jacek/dev/sandbox/clear-library-dependencies/}clear-library-dependencies...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Compiling 1 Scala source to /Users/jacek/dev/sandbox/clear-library-dependencies/target/scala-2.10/classes...
[success] Total time: 1 s, completed Feb 3, 2015 10:38:19 PM
回答by mcnutt
The thing that ended up alleviating this error for me was downgrading my java version. I recently upgraded to Java 10 which seems to have compatibility issues with some versions of scala (at the very least it has problems with scala 2.12), so moving down to Java 8 did the trick.
最终为我减轻这个错误的事情是降级我的 Java 版本。我最近升级到 Java 10,它似乎与某些版本的 scala 存在兼容性问题(至少它在 scala 2.12 上有问题),所以降到 Java 8 就成功了。
回答by ConorR
FWIW, I had a similar issue that resolved itself when I removed the .ivy2 cache for scala and restarted sbt.
FWIW,当我删除 scala 的 .ivy2 缓存并重新启动 sbt 时,我遇到了类似的问题,该问题自行解决。

