【问题标题】:scala.MatchError: java.lang.StackOverflowError (of class java.lang.StackOverflowError)scala.MatchError: java.lang.StackOverflowError(属于 java.lang.StackOverflowError 类)
【发布时间】:2017-04-14 22:28:04
【问题描述】:

我有一个使用 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 的机器上运行代码时,它会引发以下错误

即使它在某些具有 8 GB 和 jdk 1.8 的系统中出现故障,我也很困惑问题是由于 jdk 还是内存还是 play 2.3.8 中的问题 有人可以帮我解决这个问题吗

附上我完整的stacktrace的链接

提前致谢

【问题讨论】:

  • 能否将堆栈跟踪复制为文本而不是发布屏幕截图?
  • @ChrisMartin 用 stacktrace 的链接更新了我的问题
  • 你能检查一下 application.conf 文件 - maxConnectionsPerPartition= ?, minConnectionsPerPartition= 吗? .
  • @Karthik,清除工作区并重建您的应用程序。这可能会解决问题。
  • @Altius no 我没有在我的 application.conf 文件中指定 maxConnectionsPerPartition 和 minConnectionsPerPartition

标签: scala playframework stack-overflow


【解决方案1】:

因为它是一个 stackoverflow 异常,所以增加堆栈大小对我来说是诀窍:

export SBT_OPTS=-Xss4m

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

【讨论】:

  • 这在 Windows 中应该在哪里......?
  • 只是一个环境变量。指导在这里computerhope.com/issues/ch000549.htm
  • 我在我的构建 .sbt 文件中添加“SBT_OPTS=-Xss8m”,但它给了我错误“/home/smat/scalaworkspace/myproject/build.sbt:9:错误:未找到:值SBT_OPTS SBT_OPTS=-Xss8m",我该如何解决,请指导我
  • 该设置是针对 JVM 的,它不是 SBT 设置。因此,您需要在启动 SBT 时将其传递给 JVM。 SBT_OPTS 只是一个环境变量,它在启动 SBT 时传递给 JVM。
【解决方案2】:

在这个问题上找了很久也遇到了同样的问题。 尝试使用此命令启动您的应用程序

“激活器清理 -Xms1g -Xmx2g 运行”

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

编辑: 如果您希望避免每次运行应用程序时都指定参数。您可以将其添加到build.sbt 文件中,如下所示:

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

【讨论】:

  • 有什么办法可以硬编码吗?而不是每次都输入?
  • @behzad 编辑了我的答案,你可以在那里查看。
猜你喜欢
  • 1970-01-01
  • 2013-08-24
  • 1970-01-01
  • 1970-01-01
  • 2016-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多