使用eclipse
编译play2.1 scala项目时,我收到错误
编译期间[error]未捕获的异常:java.lang.StackOverflowError
[error](编译:编译)java.lang.StackOverflowError
我尝试通过添加以下行来在application.conf
中配置编译器:
jvm.memory = -Xmx5g -Xms5g -Xss8192M
(我的程序还需要很多堆空间,所以我还添加了xmx和xms)
但它不起作用..
我该如何解决这个问题?
答案 0 :(得分:3)
你得到一个StackOverflow很奇怪。它看起来像一个bug。但是,如果确实没有足够的堆栈空间,修改application.conf将无法帮助您。这些设置控制应用程序的运行时参数,而您的问题是在编译时。
这个SO答案显示了如何调整SBT的JVM参数: Out of Memory Error Using SBT When Executing Lift Project
在您的情况下,您将修改播放分发文件夹中的播放文件,并在其中添加特定于堆栈的选项(播放实用程序只是一个自定义的sbt版本)。
答案 1 :(得分:2)
您的异常可能是由于编译器中的错误,而不是堆栈大小不足。
答案 2 :(得分:1)
[error] uncaught exception during compilation:java.lang.StackOverflowError
[error] (compile:compile)java.lang.StackOverflowError
他们看起来像是来自代码中的错误。仔细检查那里的问题。通常的SBT问题是或java.lang.OutOfMemoryError: PermGen space
,在这种情况下使用@Marius Danila的答案来解决问题。
最好的办法是对您的方法进行单元测试。 Play会使用JUnit
或Selenium
。看看here并仔细检查单元测试的逻辑。
答案 3 :(得分:0)
现在可以工作了,当我将所有东西都移回旧版本时:scala 2.9.1或2.9.2一切正常,编译时没有堆栈溢出;播放版本是2.0.4。