sbt失败,神秘的错误上发出任何命令(compile,assembly,clean或任何其他)。
$ sbt --version
error: error while loading String, class file '/modules/java.base/java/lang/String.class' is broken
(class java.lang.NullPointerException/null)
Run Code Online (Sandbox Code Playgroud)
我在一台运行 macOS 的机器上,并且sbt是通过homebrew安装的。我已尝试升级到sbt( 1.3.10 )的最新版本,但错误仍然存在。
suj*_*1th 15
该问题记录在SBT 下载页面上。
Homebrew 维护者向 JDK 13 添加了一个依赖项,因为他们想使用更多的 brew 依赖项(brew#50649)。这会导致 sbt 使用 JDK 13,即使 PATH 上可用的 java 是 JDK 8 或 11。要防止 sbt 在 JDK 13 上运行,请安装jEnv或切换到使用SDKMAN。
我能够通过使用 JDK 8 通过jEnv.
Mar*_*lic 11
由于SBT文件JDK 8和11兼容版本
我们推荐AdoptOpenJDK JDK 8 或AdoptOpenJDK JDK 11
尝试通过-java-home设置来控制 sbt 使用哪个 JDK,该设置可以通过sbtopts运行配置在系统范围内进行配置
/usr/local/etc/sbtopts
Run Code Online (Sandbox Code Playgroud)
或每个项目的基础通过
<project-root>/.sbtopts
Run Code Online (Sandbox Code Playgroud)
比如在当前项目中配置sbt使用的JDK,尝试设置 .sbtopts
-java-home /Users/picard/.sdkman/candidates/java/current
Run Code Online (Sandbox Code Playgroud)
我最近也遇到了同样的问题。对我有用的是安装SDKMAN(https://sdkman.io/)
$ curl -s "https://get.sdkman.io" | bash
...
$ source "$HOME/.sdkman/bin/sdkman-init.sh"
...
Run Code Online (Sandbox Code Playgroud)
安装后,我想看看可以安装哪些版本的 Java。所以我只需运行此命令即可列出所有可用的 Java 版本
sdk list java
Run Code Online (Sandbox Code Playgroud)
选择您要安装的版本(建议安装如上所述的 8 或 11),然后使用列表中指定您的版本的标识符运行命令
sdk install java 11.0.3.hs-adpt
Run Code Online (Sandbox Code Playgroud)
安装后,它将 Java 11 设置为我系统上的默认值。然后我sbt再次运行该命令,它起作用了。
这就是在我的 Mac 上解决我的问题的原因。
brew uninstall sbt
Run Code Online (Sandbox Code Playgroud)
安装sdkman
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
Run Code Online (Sandbox Code Playgroud)
通过 sdk 安装 sbt
sdk install sbt
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7588 次 |
| 最近记录: |