StackOverflowError в процессе компиляции SBT - PullRequest
1 голос
/ 28 февраля 2012

При сборке (либо с помощью 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

Как вы можете сказать, я установил параметр '-verbose' в ключе scalacOption.

Я решил попытаться увеличить размер стека для процесса компиляции, используя:

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

Но это ничего не изменило.

Я пытался проверить сделанные мной измененияв CorrelationDal.scala и предпринял несколько попыток уменьшить количество необходимых для этого умозаключений (явное указание типов, удаление цепных созданий итераций и т. д.), но я не могу точно сказать, кто был виновником, не имея внутреннего понимания Scalaкомпилятор.

У кого-нибудь есть какие-либо подсказки относительно того, как добраться до сути проблемы?

Ответы [ 3 ]

6 голосов
/ 04 мая 2013

После того, как я добавляю -Xss2M в файл сценария sbt, все в порядке.

2 голосов
/ 29 февраля 2012

Оказывается, это проблема с конкатенацией строк.Если вы объедините слишком много строк, например:

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

Вы получите это.Я предполагаю, что это из-за механизма определения типа в компиляторе, который просто слишком старается.Надеюсь, это будет исправлено в следующей версии (я использую 2.9.1 ...)

1 голос
/ 28 февраля 2012

Этот параметр не имеет смысла - вы не работаете, просто компилируете.

Вы должны изменить размер стека для самого SBT.Просто отредактируйте скрипт sbt и измените его.

...