为什么sbt构建失败,并显示“MissingRequirementError:object scala.runtime in compiler mirror not found。”?

问题描述:

我有this multi-module build configuration,我试图让工作,但每当我尝试编译失败,错误如下项目:为什么sbt构建失败,并显示“MissingRequirementError:object scala.runtime in compiler mirror not found。”?

➜ 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$4$$anonfun$compileScala$1$1.apply$mcV$sp(AggressiveCompile.scala:71) 
    at sbt.compiler.AggressiveCompile$$anonfun$4$$anonfun$compileScala$1$1.apply(AggressiveCompile.scala:71) 
    at sbt.compiler.AggressiveCompile$$anonfun$4$$anonfun$compileScala$1$1.apply(AggressiveCompile.scala:71) 
    at sbt.compiler.AggressiveCompile.sbt$compiler$AggressiveCompile$$timed(AggressiveCompile.scala:101) 
    at sbt.compiler.AggressiveCompile$$anonfun$4.compileScala$1(AggressiveCompile.scala:70) 
    at sbt.compiler.AggressiveCompile$$anonfun$4.apply(AggressiveCompile.scala:88) 
    at sbt.compiler.AggressiveCompile$$anonfun$4.apply(AggressiveCompile.scala:60) 
    at sbt.inc.IncrementalCompile$$anonfun$doCompile$1.apply(Compile.scala:24) 
    at sbt.inc.IncrementalCompile$$anonfun$doCompile$1.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$1.apply(Defaults.scala:574) 
    at sbt.Defaults$$anonfun$compileTask$1.apply(Defaults.scala:574) 
    at sbt.Scoped$$anonfun$hf2$1.apply(Structure.scala:578) 
    at sbt.Scoped$$anonfun$hf2$1.apply(Structure.scala:578) 
    at scala.Function1$$anonfun$compose$1.apply(Function1.scala:49) 
    at sbt.Scoped$Reduced$$anonfun$combine$1$$anonfun$apply$12.apply(Structure.scala:311) 
    at sbt.Scoped$Reduced$$anonfun$combine$1$$anonfun$apply$12.apply(Structure.scala:311) 
    at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:41) 
    at sbt.std.Transform$$anon$5.work(System.scala:71) 
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:232) 
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:232) 
    at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:18) 
    at sbt.Execute.work(Execute.scala:238) 
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:232) 
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:232) 
    at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:160) 
    at sbt.CompletionService$$anon$2.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 

任何想法,这是什么,我该如何解决?

添加scala-library作为项目依赖:

"org.scala-lang" % "scala-library" % "2.10.1" 

的伎俩。仍然不知道为什么这是必要的,但不是以前。

+0

我有同样的问题,我通过在我的项目中删除* all *额外的文件来解决它。不仅仅是所有的'target /'dirs,而且还有'project/target /'dirs(我认为后者是解决它的那个,并且不会被'sbt clean'删除)。 – Dan 2013-12-18 11:52:10

+2

我不认为这是正确的解决方案。应该用* scalaVersion *指定的版本自动拉入* scala * lib。你应该尝试'干净',然后重建一切。 – davidshen84 2015-02-04 02:37:27

的问题是,当你清除所有项目的依赖了,而使用:=++=+=到依赖关系构建定义添加到libraryDependencies设置你的,也就是说,在build.sbt

libraryDependencies := Dependencies.microservice 

随着:=所有目前在libraryDependencies中设置的依赖关系已被清除,唯一可用的依赖关系是Dependencies.microservice(如上例所示)。

"org.scala-lang" % "scala-library" % "2.10.1"(或您使用的任何版本的scalaVersion)加起来只是一个解决方法,用于清除已经正确初始化的libraryDependencies设置。

这是很容易再现与下面的生成定义 - build.sbt

libraryDependencies := Seq() 

试图编译错误斯卡拉文件的结果 - 注意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 

更改构建以下(不可用,但只是为了表明这一点):

libraryDependencies ++= Seq() 

结果将如下:

[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