如何在编译过程中编译带有未捕获异常的play scala项目时增加堆栈大小:java.lang.StackOverflowerError
当使用eclipse编译play2.1 scala项目时,我得到的错误是 [错误]编译期间未捕获异常:java.lang.StackOverflower错误 [错误](编译:编译)java.lang.StackOverflower错误 我试图通过添加以下行在如何在编译过程中编译带有未捕获异常的play scala项目时增加堆栈大小:java.lang.StackOverflowerError,scala,playframework,Scala,Playframework,当使用eclipse编译play2.1 scala项目时,我得到的错误是 [错误]编译期间未捕获异常:java.lang.StackOverflower错误 [错误](编译:编译)java.lang.StackOverflower错误 我试图通过添加以下行在application.conf中配置编译器: memory=-Xmx5g-Xms5g-xs8192m (我的程序也需要很多堆空间,所以我还添加了xmx和xms) 但是它不起作用 如何解决此问题?您的异常可能是由于编译器中的错误,而不是堆栈大
application.conf
中配置编译器:
memory=-Xmx5g-Xms5g-xs8192m
(我的程序也需要很多堆空间,所以我还添加了xmx和xms)
但是它不起作用
如何解决此问题?您的异常可能是由于编译器中的错误,而不是堆栈大小不足。奇怪的是,您的堆栈溢出。它看起来确实像一只虫子。但是,如果确实没有足够的堆栈空间,那么修改application.conf对您没有帮助。这些设置控制应用程序的运行时参数,而问题在于编译 这个答案显示了如何调整SBT的JVM参数: 在您的情况下,您可以修改play分发文件夹中的play文件,并在其中添加特定于堆栈的选项(play实用程序只是一个自定义的sbt版本) 它们看起来像是源于代码中的错误。仔细检查那里的问题。通常的SBT问题是或
java.lang.OutOfMemoryError:PermGen space
,在这种情况下,使用@Marius Danila的答案来解决问题
最好的办法是对您的方法进行单元测试。Play使用了
JUnit
或Selenium
。看看并用单元测试仔细检查您的逻辑。当我将所有内容移回较旧的版本时,现在一切正常:scala 2.9.1或2.9.2一切正常,编译时没有堆栈溢出;play版本是2.0.4。实际上,一次播放需要8 GB的堆栈大小!应用程序?你有一TB的内存吗?没有,我只有64G内存。我使用8g进行测试,因为我对堆栈溢出问题非常恼火。
[error] uncaught exception during compilation:java.lang.StackOverflowError
[error] (compile:compile)java.lang.StackOverflowError