我正在尝试将项目移动到Java 8.当我运行编译时,我得到了这个:
[error] (MyProject/compile:compileIncremental) javac returned nonzero exit code
Java 7不会发生这种情况。我怀疑这与我们使用Lombok有关。
有没有办法从javac获得实际输出?我尝试过“last”和“lastgrep”,但我只看到了SBT日志。
我正在使用SBT 0.13.8
感谢。 阿什利
答案 0 :(得分:1)
设置了javaHome
设置后,sbt会通过派生该进程来调用javac
,并尝试从输出中从屏幕上抓取错误消息,这很容易出错。 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可能会进一步支持:
当我删除
JAVA_HOME
中的.bash_profile
变量然后重新启动终端时,错误消息在Mac上消失了。
如果您继续使用sbt 1.x看到此问题,请报告https://github.com/sbt/zinc/issues/520
答案 1 :(得分:0)
我安装了SBT 0.13.9,RHEL和OpenJDK1.8并且得到了相同的错误(没有进一步的堆栈跟踪),并且交换到Oracle的JDK修复了它。可能是javac-configuration的一些问题,但没有设法用OpenJDK快速修复它。可能不是最好的解决方案。
答案 2 :(得分:0)
当我删除JAVA_HOME
中的.bash_profile
变量,然后重新启动终端时,我的Mac上的错误消息就消失了。