我正在尝试将我们的项目移至 Java 8。当我运行编译时,我得到以下信息:
[error] (MyProject/compile:compileIncremental) javac returned nonzero exit code
Java 7 不会发生这种情况。我怀疑这与我们使用 Lombok 有关。
有没有办法从 javac 获取实际输出?我试过“last”和“lastgrep”,但我只看到 SBT 日志。
我正在使用 SBT 0.13.8
谢谢。
阿什利
最佳答案
当javaHome
设置已设置,sbt 调用 javac
通过 fork 进程,并尝试从输出中提取错误消息,这很容易出错。 sbt 1.2.0-RC3 稍微改进了它,但它是一个 hack。
避免这种情况的一种方法是确保 javaHome
设置设置为 None
. 2015 年左右 sbt-extras 用于设置 javaHome
悄悄地来自 JAVA_HOME
环境变量,但我认为自 2016 年以来在 https://github.com/paulp/sbt-extras/pull/160 中已被删除.由于这个问题是在 2015 年 6 月提出的,也许这就是当时的问题。如果您使用的是 sbt-extras,请更新到最新版本。
Parag 的 answer/observation 可能会进一步支持这一点。 :
The error message disappeared on my Mac when I removed the
JAVA_HOME
variable in.bash_profile
and then restarting Terminal.
如果您在使用 sbt 1.x 时仍然看到此问题,请在 https://github.com/sbt/zinc/issues/520 上报告
关于sbt - 如何找出当 SBT 说 "javac returned nonzero exit code"时发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31132664/