2015-06-25 2 views
16

Я столкнулся с этой ошибкой на некоторое время. Из-за этого полностью раздражает. Пробовал все аналогичные решения, рассматриваемые в stackoverflow и других сайтах.sbt компиляция вызывает ошибку stackoverflow

У меня есть 4 отдельных проекта scala. Из них я получаю ошибку StackOverflow при компиляции проектов буксировки. Эти два проекта являются самыми крупными из четырех проектов. Я получаю эту ошибку, когда пытаюсь построить проект на компьютере Ubuntu Server. Я попытался увеличить параметры Xmx в файле конфигурации sbt, но без успеха.

Может кто-нибудь, пожалуйста, помогите мне решить это, так как я сошел с ума из-за этого. Если я создам проект 10 раз, он будет преуспешен в 1 или 2 попытках.

Из журнала ошибок я понял, что проблема связана с проверкой типов. Но я понятия не имею, где это происходит.

Один из неудачных проектов имеет более 1000 классов/признаков (без включения классов классов).

Детали:

Ubuntu Server(14) 
Sbt : 0.13.6 and 0.13.8 tried 
Scala Version : 2.11.6 
JDK: 1.8 

Несколько строк ошибки наклеена ниже:

java.lang.StackOverflowError 
    at scala.tools.nsc.transform.Erasure$Eraser.typed1(Erasure.scala:696) 
    at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5396) 
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5423) 
    at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5370) 
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5374) 
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$96.apply(Typers.scala:4523) 
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$96.apply(Typers.scala:4523) 
    at scala.tools.nsc.typechecker.Typers$Typer.silent(Typers.scala:680) 
    at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4522) 
    at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4578) 
    at scala.tools.nsc.typechecker.Typers$Typer.typedInAnyMode$1(Typers.scala:5343) 
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5360) 
    at scala.tools.nsc.transform.Erasure$Eraser.typed1(Erasure.scala:696) 
    at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5396) 
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5423) 
    at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5370) 
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5374) 
    at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:5472) 
    at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:5480) 
    at scala.tools.nsc.transform.Erasure$Eraser.adaptMember(Erasure.scala:642) 
    at scala.tools.nsc.transform.Erasure$Eraser.typed1(Erasure.scala:696) 
    at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5396) 
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5423) 
    at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5370) 
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5374) 
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$96.apply(Typers.scala:4523) 
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$96.apply(Typers.scala:4523) 
    at scala.tools.nsc.typechecker.Typers$Typer.silent(Typers.scala:680) 
    at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4522) 
    at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4578) 
    at scala.tools.nsc.typechecker.Typers$Typer.typedInAnyMode$1(Typers.scala:5343) 
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5360) 
    at scala.tools.nsc.transform.Erasure$Eraser.typed1(Erasure.scala:696) 
    at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5396) 
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5423) 
    at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5370) 
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5374) 
    at scala.tools.nsc.typechecker.Typers$Typer.typedArg(Typers.scala:3163) 
    at scala.tools.nsc.typechecker.PatternTypers$PatternTyper$class.typedArgWithFormal$1(PatternTypers.scala:112) 
    at scala.tools.nsc.typechecker.PatternTypers$PatternTyper$$anonfun$2.apply(PatternTypers.scala:115) 
    at scala.tools.nsc.typechecker.PatternTypers$PatternTyper$$anonfun$2.apply(PatternTypers.scala:115) 
    at scala.runtime.Tuple2Zipped$$anonfun$map$extension$1.apply(Tuple2Zipped.scala:46) 
    at scala.runtime.Tuple2Zipped$$anonfun$map$extension$1.apply(Tuple2Zipped.scala:44) 
    at scala.collection.immutable.List.foreach(List.scala:381) 
    at scala.runtime.Tuple2Zipped$.map$extension(Tuple2Zipped.scala:44) 
    at scala.tools.nsc.typechecker.PatternTypers$PatternTyper$class.typedArgsForFormals(PatternTypers.scala:115) 
    at scala.tools.nsc.typechecker.Typers$Typer.typedArgsForFormals(Typers.scala:111) 
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$handleMonomorphicCall$1(Typers.scala:3469) 
    at scala.tools.nsc.typechecker.Typers$Typer.doTypedApply(Typers.scala:3494) 
    at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4544) 
    at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4578) 
    at scala.tools.nsc.typechecker.Typers$Typer.typedInAnyMode$1(Typers.scala:5343) 
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5360) 
    at scala.tools.nsc.transform.Erasure$Eraser.typed1(E 
+1

Вам необходимо изменить '-Xss'. Попробуйте '-Xss3m' – jrudolph

+0

@jrudolph Где мне это сделать? В sbtconfig.txt? или где-то еще? –

+0

Те же, что и вы изменили '-Xmx'. Уместно использовать сценарий sbt launcher. – jrudolph

ответ

4

Это было затрагивающей Scala, так 2.11.4 до 2.11.6 AFAIK. Он не отображается как исправленный в последних выпусках для версии 2.11.7.

К счастью следуя track на вопрос трекера это дублируется ticket с ответом здесь на stack overflow

без исходного кода труднее дать больше показаний, но это обязательно должен быть хороший указатель, чтобы найти проблему и применить предлагаемое решение

+0

Я использую много дженериков, но, как упоминалось в билете, у нас нет манифеста с Any. Я пробовал все настройки, связанные с памятью, но без использования. –

+0

Вы не упомянули, что не проявили.В любом случае, вы можете попробовать a) искать использование «Manifest» в библиотеках, которые вы можете использовать, вероятно, некоторые из них используют его. B) Обновите свой проект до Scala 2.11.7 c) Сообщите об ошибке для scala-lang.org –

+0

Чтобы быть ясным, я использую Manifest в некоторых местах для десериализации json. Например: def extractEntity (json: String) (неявный m: манифест [E]): E = parse (json) .extract [E], где E - это признак BaseEntity с некоторыми общими полями (id, isActive и т. Д.), , В настоящее время я использую 2.11.6. Я попробую с 2.11.7 и проверить, существует ли проблема. –

0

Я пробовал все изменения конфигурации, но не работал в машине. Поэтому я пропустил это почти месяц. Недавно я попытался построить проект в Jenkins и получил ту же ошибку. Затем я обновил sbt 0.13.8 и добавил флаг jvm -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256m -Xmx1024M -Xss16M в флаг сборки jenkins. И до сих пор все компиляции были успешными. Я помню, как добавлял флаг jvm в файл конфигурации sbt, но получал ту же ошибку. Но теперь он отлично работает в jenkins после добавления этого флага.

Смежные вопросы