Scala匹配错误:java.lang.StackOverflowError(java.lang.StackOverflowError类)

3
我有一个使用Play Scala 2.0开发的项目,一切正常。但我需要将版本升级到2.3.8。所以我按照以下链接迁移应用程序版本:https://www.playframework.com/documentation/2.3.x/Migration23。我能够在我的机器上运行新版本代码,该机器配备了8 GB RAM和jdk 1.7.0_25,但是当我从其他配备4 GB RAM的机器上运行代码时,它会抛出以下错误: enter image description here 甚至在某些配备8 GB和jdk 1.8的系统中也会出现问题,我很困惑,不知道问题是由于jdk还是内存,或者是Play 2.3.8中的问题。请问是否有人能帮助我解决这个问题?
附上完整的stacktrace链接
提前致谢。

@ChrisMartin 更新了我的问题,并附上了堆栈跟踪链接。 - Karthik
你能检查一下 application.conf 文件中的 maxConnectionsPerPartition 和 minConnectionsPerPartition 参数吗? - royki
@Altius,我在我的application.conf文件中没有指定maxConnectionsPerPartition和minConnectionsPerPartition。 - Karthik
@Karthik,这可能是配置文件的问题,你是从Eclipse IDE还是控制台编译的? - S.Karthik
你可以尝试运行 activator -Xmx1024M-XX:MaxPermSize=512m run - S.Karthik
显示剩余6条评论
2个回答

4

由于这是一个stackoverflow异常,增加堆栈大小对我有帮助:

export SBT_OPTS=-Xss4m

您可以尝试调整数字以查看哪个有效。 我仍然不清楚根本原因,因为它在Java 7和Java 8上都能够复制,并且也看到错误在编译时弹出。


这应该在Windows中的哪里呢? - Hitesh Vaghani
这只是一个环境变量。指令在这里:http://www.computerhope.com/issues/ch000549.htm - anshumans
我在我的构建.sbt文件中添加了"SBT_OPTS=-Xss8m",但是它给我返回错误信息"/home/smat/scalaworkspace/myproject/build.sbt:9: error: not found: value SBT_OPTS SBT_OPTS=-Xss8m",请问如何解决这个问题,请指导我。 - M.Ahsen Taqi
那个设置是针对JVM的,不是SBT的设置。因此,当启动SBT时,您需要将其传递给JVM。 SBT_OPTS只是一个环境变量,在启动SBT时会传递给JVM。 - anshumans

3

在搜索了很久后,遇到了同样的问题。尝试使用以下命令启动应用程序:

"activator clean -Xms1g -Xmx2g run"

如果不起作用,请尝试将1g和2g增加到2g和3g。

编辑: 如果您想避免每次运行应用程序时都要指定参数,可以将以下内容添加到build.sbt文件中:

javaOptions ++= Seq(-Xms1G, "-Xmx2G")

有没有办法硬编码这个,而不是每次都要输入它? - behzad
2
@behzad 已编辑我的答案,您可以在那里查看。 - curious

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接