我正在尝试在scala-sbt项目中运行主类。运行该类会导致stackoverflow错误,并在下面粘贴StackTrace。
我确定这不是代码问题,因为对于同一项目,我可以通过按如下说明设置sbt conf文件中的内存来运行sbt程序包:https://stackoverflow.com/q/55874883。
我试图在Intellij>设置> Scala Compile Server中设置参数,但是它无助于克服Error。 JDK:配置文件默认 Jvm最大堆大小,MB:2024 JVM选项:-server -Xmx2G -Xss20m -XX:MaxPermSize = 1000m -XX:ReservedCodeCacheSize = 1000m
IntelliJ: IntelliJ IDEA 2019.1(社区版) Build#IC-191.6183.87,建于2019年3月27日 JRE:1.8.0_202-release-1483-b39 amd64 JVM:JetBrains s.r.o的OpenJDK 64位服务器VM Windows 10 10.0
Sbt版本:1.2.8
Scala版本:2.11.8
Error:scalac: Error: org.jetbrains.jps.incremental.scala.remote.ServerException
java.lang.StackOverflowError
at scala.tools.nsc.transform.TailCalls$TailCallElimination.transform(TailCalls.scala:273)
at scala.tools.nsc.transform.TailCalls$TailCallElimination.transform(TailCalls.scala:209)
at scala.tools.nsc.transform.TailCalls$TailCallElimination.noTailTransform(TailCalls.scala:214)
at scala.tools.nsc.transform.TailCalls$TailCallElimination.transform(TailCalls.scala:403)
at scala.tools.nsc.transform.TailCalls$TailCallElimination.transform(TailCalls.scala:209)
at scala.tools.nsc.transform.TailCalls$TailCallElimination.noTailTransform(TailCalls.scala:214)
at scala.tools.nsc.transform.TailCalls$TailCallElimination.transform(TailCalls.scala:403)
at scala.tools.nsc.transform.TailCalls$TailCallElimination.transform(TailCalls.scala:209)
redacted...
答案 0 :(得分:5)
我在Intellij IDEA Ultimate 2020.1.1中遇到了同样的问题。
以上选项均不适合我。但是,有了上述答案的提示,我发现Scala编译器也有不同的设置,更改后错误停止了。
我增加了Scala编译器服务器的堆栈跟踪大小:Preferences
-> Compiler
-> Scala Compiler
-> Scala Compiler Server
。然后,相应地更改JVM选项(在我的情况下为-server -Xss1024m
)。
答案 1 :(得分:2)
我在Intellij IDEA Community Edition 2019.3.4中遇到了相同的问题。
最后,对我有用的是这个solution。基本上,请转到Settings
->
Build, Execution, Deployment
->
Compiler
然后,在“用户本地生成过程VM选项”上,使用-Xss
将栈大小设置为更大的值
以我为例,我终于设法进行了将其设置为-Xss2048m
的测试
我希望这会有所帮助。
答案 2 :(得分:0)
转到“配置”→“编辑自定义VM选项”,然后将其更改添加</ p>
答案 3 :(得分:0)
如果你能够做 sbt 包(所以你有足够的堆大小并且为 sbt 配置了 -Xss
)但是运行类仍然抛出 java.lang.StackOverflowError 尝试去
Settings
->
Build, Execution, Deployment
->
sbt
并勾选
sbt shell
->
use for:
project reload
和 builds