StackOverflowError在SBT的编译中

时间:2012-02-28 12:51:26

标签: scala build sbt

在构建时(使用compile或test:compile),我收到此错误:

[info] [specializing CorrelationDal.scala]
[error] {file:/home/bamboo/.../}batch/compile:compile: java.lang.StackOverflowError
[error] Total time: 20 s, completed Feb 28, 2012 7:32:08 AM

正如您所知,我在scalacOption键中设置了'-verbose'选项。

我决定尝试使用以下方法为编译过程提供更大的堆栈大小:

(fork := true) ++ (javaOptions += "-Xss4G")

但这没有改变。

我已经尝试检查我对CorrelationDal.scala所做的更改,并尝试放宽它需要做的推理量(明确注意类型,删除可迭代的链式创建等),但我可以'在没有内部理解Scala编译器的情况下,确实告诉了哪些是罪魁祸首。

有没有人知道如何解决问题的核心?

3 个答案:

答案 0 :(得分:6)

在sbt脚本文件中添加-Xss2M之后,就可以了。

答案 1 :(得分:2)

原来这是字符串连接的问题。如果连接太多字符串,如下所示:

"string" + "other string" + variable + "string" + ...

你会明白的。我假设这是因为编译器中的类型推断机制只是尝试太多。希望它将在未来版本中修复(我正在使用2.9.1 ...)

答案 2 :(得分:1)

该参数毫无意义 - 您没有运行,只是编译。

您必须更改SBT本身的堆栈大小。只需编辑sbt脚本并进行更改即可。