2016-03-29 18 views
0

我正在编译一个具有Scala 2.10.5的77 Scala文件的项目。Scala编译器抛出“内部”类型不匹配错误,但没有提供错误位置

我得到0警告和1个奇怪的错误消息:

[ERROR] type mismatch; 
found : Array[?B] 
required: scala.collection.GenTraversableOnce[?] 
Note that implicit conversions are not applicable because they are ambiguous: 
both method booleanArrayOps in object Predef of type (xs: Array[Boolean])scala.collection.mutable.ArrayOps[Boolean] 
and method byteArrayOps in object Predef of type (xs: Array[Byte])scala.collection.mutable.ArrayOps[Byte] 
are possible conversion functions from Array[?B] to scala.collection.GenTraversableOnce[?] 
[ERROR] one error found 
[INFO] ------------------ ....{this line is irrelevant} 

错误信息没有显示错误的位置,所以我认为这是一个scalac内部错误。我应该怎么做才能调试它?

非常感谢您的帮助。

更新:我启用调试模式,看到完整的堆栈跟踪:

Caused by: Compilation failed 
     at sbt.compiler.AnalyzingCompiler.call(AnalyzingCompiler.scala:105) 
     at sbt.compiler.AnalyzingCompiler.compile(AnalyzingCompiler.scala:48) 
     at sbt.compiler.AnalyzingCompiler.compile(AnalyzingCompiler.scala:41) 
     at sbt.compiler.AggressiveCompile$$anonfun$3$$anonfun$compileScala$1$1.apply$mcV$sp(AggressiveCompile.scala:99) 
     at sbt.compiler.AggressiveCompile$$anonfun$3$$anonfun$compileScala$1$1.apply(AggressiveCompile.scala:99) 
     at sbt.compiler.AggressiveCompile$$anonfun$3$$anonfun$compileScala$1$1.apply(AggressiveCompile.scala:99) 
     at sbt.compiler.AggressiveCompile.sbt$compiler$AggressiveCompile$$timed(AggressiveCompile.scala:166) 
     at sbt.compiler.AggressiveCompile$$anonfun$3.compileScala$1(AggressiveCompile.scala:98) 
     at sbt.compiler.AggressiveCompile$$anonfun$3.apply(AggressiveCompile.scala:143) 
     at sbt.compiler.AggressiveCompile$$anonfun$3.apply(AggressiveCompile.scala:87) 
     at sbt.inc.IncrementalCompile$$anonfun$doCompile$1.apply(Compile.scala:39) 
     at sbt.inc.IncrementalCompile$$anonfun$doCompile$1.apply(Compile.scala:37) 
     at sbt.inc.IncrementalCommon.cycle(Incremental.scala:99) 
     at sbt.inc.Incremental$$anonfun$1.apply(Incremental.scala:38) 
     at sbt.inc.Incremental$$anonfun$1.apply(Incremental.scala:37) 
     at sbt.inc.Incremental$.manageClassfiles(Incremental.scala:65) 
     at sbt.inc.Incremental$.compile(Incremental.scala:37) 
     at sbt.inc.IncrementalCompile$.apply(Compile.scala:27) 
     at sbt.compiler.AggressiveCompile.compile2(AggressiveCompile.scala:157) 
     at sbt.compiler.AggressiveCompile.compile1(AggressiveCompile.scala:71) 
     at com.typesafe.zinc.Compiler.compile(Compiler.scala:184) 
     at com.typesafe.zinc.Compiler.compile(Compiler.scala:164) 
     at sbt_inc.SbtIncrementalCompiler.compile(SbtIncrementalCompiler.java:92) 
     at scala_maven.ScalaCompilerSupport.incrementalCompile(ScalaCompilerSupport.java:303) 
     at scala_maven.ScalaCompilerSupport.compile(ScalaCompilerSupport.java:119) 
     at scala_maven.ScalaCompilerSupport.doExecute(ScalaCompilerSupport.java:99) 
     at scala_maven.ScalaMojoSupport.execute(ScalaMojoSupport.java:482) 
     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) 
     ... 21 more 

是识别问题有所帮助?

+0

它不是“scalac内部错误”,它在你的代码中的错误。您需要查看源代码以找出问题所在。 – Dima

+0

编译器的消息对我来说似乎非常简单 - 您的数组需要转换为'scala.collection.GenTraversableOnce',但在作用域中有两个这样的隐式转换,因此编译器无法解析使用哪一个。如果不看实际的代码,不能进一步帮助。 – slouc

回答

1

OK我找到了一个解决方案:

scalac 2.10.5对打印出的错误,这的确是我的代码语法错误的行号毛刺。

当我切换到scalac 2.11.7行号打印出来,这可以很容易地解决这个问题