Intellij Idea 在IntelliJ上使用Scala的StackOverflowError

fd3cxomn  于 12个月前  发布在  Scala
关注(0)|答案(6)|浏览(144)

我正在尝试使用Gradle在IntelliJ上构建Scala项目。我能够使,但编译不断失败与堆栈溢出错误。
我浏览了其他有类似问题的帖子,建议增加堆/堆栈大小(thisthis)。到目前为止,我已经尝试在JAVA_OPTS和idea64.exe.vmoptions中设置这些。
-Xss512m -Xms512m -Xmx2048m -XX:ReservedCodeCacheSize=64m -ea
我还尝试了包含-XX:MaxPermSize= 2048 m,这也不起作用(相信Java 8不支持它)。
为具有相同配置的另一个人构建相同的代码。有没有人能告诉我我错过了什么?
详细信息:

IntelliJ Ultimate 2016.1
Scala 2.10.3
Java 1.8.0_92

堆栈跟踪:

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)
rslzwgfq

rslzwgfq1#

例外情况来自IntelliJ使用的编译器,因此您需要更改 * 编译器构建进程'* 堆大小。去

File -> Settings -> Build, Execution, Deployment -> Compiler -> Build process 
heap size (Mbytes)

将此属性增加到更高的值。

mnowg1ta

mnowg1ta2#

我通过以下方式解决了这个问题:
首选项->构建、执行、部署->编译器-> Scala编译器-> Scala编译服务器
并更新了JVM选项以使用更大的堆栈大小,例如:-Xss8m
重新启动以使更改生效。

v7pvogib

v7pvogib3#

在eclipse.ini中添加-Xss 100 m在我的情况下工作,可能在intellijJ中添加类似的属性可能会有所帮助。

nzk0hqpo

nzk0hqpo4#

以下是对我有效的方法:

  • 从Windows Powershell,$env:SBT_OPTS="-Xss 1024 m”,然后运行sbt compile
  • 同样在IntelliJ v2020.2中,以下也可以工作:设置->构建、执行、部署->构建工具-> SBT -> JVM:VM参数:- Xss 1024米
j0pj023g

j0pj023g5#

我有同样的问题,并在intellij做了很多改变,但没有一个工作。
我从我的代码中删除了unused case classes,它的工作

lo8azlld

lo8azlld6#

对于那些可怜的灵魂,我在互联网上搜索,找不到一个有效的解决方案。在我的情况下:将库和Scala更新到最新版本并没有帮助;使用-Xss更改堆栈大小没有帮助;减少case类的嵌套级别没有帮助;重新启动Gradle守护程序没有帮助。我有几个case类,只有几十个字段,有些有嵌套的case类。我发现它可能与case类有关,并删除了无法编译的文件中测试case类中不必要的字段,最终解决了这个问题。

相关问题