2013-05-02 39 views
16

Tôi có this multi-module build configuration mà tôi đang cố gắng để có được làm việc, nhưng bất cứ khi nào tôi cố gắng biên dịch dự án nó không thành công với các lỗi sau:Tại sao xây dựng sbt thất bại với "MissingRequirementError: đối tượng scala.runtime trong trình biên dịch không tìm thấy."?

➜ 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 

Bất kỳ ý tưởng gì này là gì và làm thế nào tôi có thể sửa chữa nó?

Trả lời

12

Thêm scala-library như một sự phụ thuộc dự án:

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

đã làm các trick. Vẫn không chắc chắn tại sao điều này là cần thiết bây giờ nhưng không phải trước đây.

+0

Tôi đã gặp vấn đề tương tự và tôi đã sửa nó bằng cách xóa * tất cả * tệp phụ trong dự án của tôi. Không chỉ là tất cả các 'target /' dirs, mà là tất cả các 'project/target /' dirs (tôi nghĩ rằng sau này là một giải pháp đã giải quyết nó, và chúng không bị xóa bởi 'sbt clean'). – Dan

+2

Tôi không nghĩ đó là giải pháp phù hợp. * Scala * lib sẽ được kéo tự động với phiên bản được chỉ định bởi * scalaVersion *. Bạn nên thử 'sbt clean', sau đó xây dựng lại mọi thứ. – davidshen84

16

Vấn đề là khi bạn dọn dẹp tất cả các dự án phụ thuộc lên trong khi thiết của bạn, tức là sử dụng := không ++= hay += để thêm phụ thuộc vào libraryDependencies trong một định nghĩa xây dựng, nói trong build.sbt:

libraryDependencies := Dependencies.microservice 

Với := tất cả các phụ thuộc hiện tại mà sbt thiết lập trả trước trong libraryDependencies sẽ bị xóa và phụ thuộc duy nhất có sẵn là từ Dependencies.microservice (như trong ví dụ trên).

Thêm "org.scala-lang" % "scala-library" % "2.10.1" (hoặc bất kỳ phiên bản nào của scalaVersion bạn sử dụng) chỉ là giải pháp thay thế để xóa cài đặt libraryDependencies đã được khởi tạo đúng cách.

Đó là một cách dễ dàng để tái tạo với các định nghĩa xây dựng sau - build.sbt:

libraryDependencies := Seq() 

Đang cố gắng để biên dịch Scala file kết quả trong các lỗi - lưu ý 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 

Thay đổi xây dựng như sau (không thể sử dụng, nhưng chỉ để hiển thị điểm):

libraryDependencies ++= Seq() 

Kết quả sẽ như sau:

[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 
Các vấn đề liên quan