sbt, "java.lang.OutOfMemoryError: Java heap space"

sbt, "java.lang.OutOfMemoryError: Java heap space"

我正在尝试通过以下方式复制 openie4.0 程序: https://github.com/knowitall/openie

环境是 Ubuntu: 18.04, 斯卡拉:2.10.2, Java: 1.7.0_80, sbt: 0.13.18,

我成功完成了“运行 sbt:”这一步 ''' 某人 'run-main edu.knowitall.openie.OpenIECli' '''

然而,我一直面临

的问题
java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java heap space

当我开始创建独立 jar 时,使用时:

sbt clean compile assembly

正在尝试 “sbt -J-Xmx2700M clean compile assembly”(或更大,比如 10g,我的电脑上有 64g) 以上out of memeory问题继续加:

java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java heap space
[error] Not a valid command: J-Xmx10g
[error] Not a valid project ID: J-Xmx10g
[error] Expected ':' (if selecting a configuration)
[error] Not a valid key: J-Xmx10g
[error] J-Xmx10g
[error]     

这非常令人困惑,为什么这个命令不是一个有效的命令,我没有找到解决这个问题的方法。

后来我尝试设置通用JAVA_OPTS,但没有用。 然后我接受了 user972946(最后一个)的建议,这表明它自默认设置以来就被覆盖了。 How to set heap size for sbt?.

然后按照他的建议修复后尝试,还是一样.....

env JAVA_OPTS="-Xmx41200m" sbt clean compile assembly

我也采纳了上面 Mike 和 Cassio 的建议 link...根本不起作用。

非常感谢对此的任何建议。

非常感谢。 赫兹

根据Baeldung:

尝试在 运行 之前导出此环境变量:

export SBT_OPTS="-XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=10G -Xmx10G -Xms10G"

或者,SBT 允许我们在名为 .jvmopts 的文件上指定 JVM 选项。在项目的根目录中创建一个名为 .jvmopts 的文件并将其放入:

-Xms1g
-Xmx4g

如果您查看以下行:

[error] Not a valid command: J-Xmx10g

您的 sbt 无法将此解析为有效选项,因为您使用的是 java 7,所以可以发布(确保 java7 接受 -Xmx$size 作为有效参数) ,同样的事情也适用于 sbt 0.13(它已经很老了)。还必须有一个文件或与部署相关的东西(指南或 CI/CD 文件或其他东西),您可以从中获得有关如何 运行 项目的帮助。 (如果你使用 java 8 应该没问题)