在Mac上启动sbt时报错:
error: error while loading String, class file '/modules/java.base/java/lang/String.class' is broken
(class java.lang.NullPointerException/null)
[error] java.io.IOError: java.lang.RuntimeException: /packages cannot be represented as URI
...
问题原因
问题在SBT官方下载页面有描述:
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.
用Homebrew安装的sbt对jdk13有依赖,若你的java环境是jdk 8 或 11 时,就可能出错。官方建议是用jEnv或SDKMAN来管理环境。
解决方法
用sdkman重装sbt:
brew uninstall sbt
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install sbt