sbt - 如何找出当 SBT 说 "javac returned nonzero exit code"时发生了什么?

标签 sbt

我正在尝试将我们的项目移至 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/

相关文章:

linux - 将路径参数传递给 bash

plugins - 依赖项中的 sbt-assembly 和多个类定义

尽管将 rpmBrpJavaRepackJars 设置为 false,sbt-native-packager rpm brp-java-repack-jars 仍在运行

scala - SBT - 使用汇编时的多项目合并策略和构建 sbt 结构

sbt - 如何从代理后面使用 sbt?

scala - IntelliJ IDEA 2020.3 Scala 插件不适用于新项目

java - 构建 apache Spark 时出错

scala - SBT 0.13/1.0 - 替换 <<=/<+= 运算符以重新定义任务?

scala - SBT:具有可在 build.sbt 中访问的值的外部配置文件

sbt - 访问 sbt 子项目的 managedClasspath