SBT 因“String.class 已损坏"而失败 [英] SBT fails with `String.class is broken`
问题描述
sbt
在发出任何命令(compile
、assembly
、clean
或任何其他).
sbt
fails with a cryptic error on issuing any command (compile
, assembly
, clean
or any other).
$ sbt --version
error: error while loading String, class file '/modules/java.base/java/lang/String.class' is broken
(class java.lang.NullPointerException/null)
我在一台运行 macOS 的机器上,sbt
是通过 homebrew 安装的.我已尝试升级到最新版本的 sbt
(1.3.10),但错误仍然存在.
I am on a machine running macOS, and sbt
was installed via homebrew. I have tried upgrading to the latest versions of sbt
(1.3.10), but the error still persists.
推荐答案
该问题记录在 SBT下载页面.
Homebrew 维护者向 JDK 13 添加了一个依赖项,因为他们想使用更多的 brew 依赖项(酿造#50649).这会导致 sbt 使用 JDK 13,即使 PATH 上可用的 java 是 JDK 8 或 11.要防止 sbt 在 JDK 13 上运行,请安装 jEnv 或切换到使用 SDKMAN.
Homebrew maintainers have added a dependency to JDK 13 because they want to use more brew dependencies (brew#50649). This causes sbt to use JDK 13 even when java available on PATH is JDK 8 or 11. To prevent sbt from running on JDK 13, install jEnv or switch to using SDKMAN.
我通过 jEnv
使用 JDK 8 解决了这个问题.
I was able to resolve the problem by using JDK 8 via jEnv
.
这篇关于SBT 因“String.class 已损坏"而失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!