Почему sbt build терпит неудачу с помощью " MissingRequirementError: object scala.среда выполнения в зеркале компилятора не найдена."?

Я эта конфигурация сборки нескольких модулей что я пытаюсь работать, но всякий раз, когда я пытаюсь скомпилировать проект, он терпит неудачу со следующей ошибкой:

➜  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

есть идеи что это и как я могу это исправить?

3 ответов


проблема заключается в том, когда вы очищаете все зависимости проекта при настройке, т. е. с помощью := не ++= или += для добавления зависимостей в libraryDependencies в определении сборки, скажем, в build.sbt:

libraryDependencies := Dependencies.microservice

С := все текущие зависимости, которые sbt устанавливает заранее в libraryDependencies очищаются, и единственными доступными зависимостями являются следующие из Dependencies.microservice (как в приведенном выше примере).

сложение "org.scala-lang" % "scala-library" % "2.10.1" (или любая версия scalaVersion вы use) - это просто обходной путь для очистки уже правильно инициализированного libraryDependencies настройка.

это легко воспроизвести со следующим определением строить - build.sbt:

libraryDependencies := Seq()

попытка скомпилировать файлы 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

измените сборку на следующую (не используется, но просто чтобы показать точку):

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

добавлять scala-library как зависимость проекта:

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

сделал свое дело. До сих пор не уверен, почему это необходимо сейчас, но не раньше.


то, что в конечном итоге облегчило эту ошибку для меня, было понижением моей версии java. Недавно я обновился до Java 10, который, похоже, имеет проблемы совместимости с некоторыми версиями scala (по крайней мере, у него есть проблемы с scala 2.12), поэтому переход на Java 8 сделал трюк.