小编Kev*_*rty的帖子

为什么sbt编译失败并出现StackOverflowError?

我正在研究一个已经存在了几年的Scala项目,但这对我来说是新的.我的任务是将它从Scala 2.9.3升级到2.11.7及其依赖项.我已经过了错误和警告,但我无法让项目在SBT中成功编译.我总是在几乎相同的地方得到一个StackOverflowError.堆栈跟踪看起来像这样,但细节因Xss设置而异(目前为4M,但尝试高达24M):

java.lang.StackOverflowError
at scala.tools.nsc.transform.Erasure$Eraser.typed1(Erasure.scala:698)
at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5395)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5422)
at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5369)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5373)
at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:5471)
at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:5479)
at scala.tools.nsc.transform.Erasure$Eraser.adaptMember(Erasure.scala:644)
at scala.tools.nsc.transform.Erasure$Eraser.typed1(Erasure.scala:698)
at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5395)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5422)
Run Code Online (Sandbox Code Playgroud)

SBT_OPTS看起来像这样:

-Xmx2G -Xss4M -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled
Run Code Online (Sandbox Code Playgroud)

我可以在Intellij中成功"制作"项目,其他人可以从GitHub中获取我的更改并在sbt中编译项目,因此问题似乎是我的机器本地(最近的四核Macbook Pro,带有16GB RAM).其他Scala/sbt项目在我的机器上成功编译.

以下是其他相关细节:

Scala version: 2.11.7
Java version: java version "1.8.0_66" (build 1.8.0_66-b17)
sbt version: 0.13.7 (have also tried 0.13.9)
Run Code Online (Sandbox Code Playgroud)

我已经完全重建了ivy2缓存并清除了lib_managed目录.scala-compiler.jar的版本与至少一台可以"成功编译"代码的机器上使用的版本相同.我做了一个干净的重新安装sbt(通过brew remove sbt,手动删除〜/ .sbt目录,然后brew install sbt).

我没有试图隔离发生错误时编译的源代码行.我认为在某处查找配置问题或依赖性冲突会更有效率.

任何进一步故障排除的建议将不胜感激.

[已添加...]添加它作为实验,我从https://github.com/scala/scala下载了Scala语言源代码并尝试以下非常类似的错误可能会有所帮助sbt compile:

java.lang.StackOverflowError
at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.outerValue(ExplicitOuter.scala:229)
at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:441)
at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:352)
at scala.reflect.internal.Trees$class.itransform(Trees.scala:1345)
at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16) …
Run Code Online (Sandbox Code Playgroud)

scala sbt

33
推荐指数
4
解决办法
1万
查看次数

标签 统计

sbt ×1

scala ×1