SBT 因“String.class 已损坏"而失败 [英] SBT fails with `String.class is broken`

查看:39
本文介绍了SBT 因“String.class 已损坏"而失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

sbt 在发出任何命令(compileassemblyclean 或任何其他).

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆