Сбой SBT с `String.class не работает` - PullRequest
2 голосов
/ 17 апреля 2020

sbt завершается с ошибкой crypti c при вводе любой команды (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)

Я на машине, работающей macOS, а sbt был установлен через homebrew . Я попытался выполнить обновление до последних версий sbt ( 1.3.10 ), но ошибка все еще сохраняется.

Ответы [ 2 ]

2 голосов
/ 17 апреля 2020

Эта проблема задокументирована на странице SBT .

Сопровождающие Homebrew добавили зависимость в JDK 13, поскольку хотят использовать больше зависимостей от brew ( brew) # 50649 ). Это приводит к тому, что sbt использует JDK 13, даже если java доступно для PATH, это JDK 8 или 11. Чтобы предотвратить запуск sbt на JDK 13, установите jEnv или переключитесь на использование SDKMAN .

Мне удалось решить проблему с помощью JDK 8 через jEnv.

1 голос
/ 17 апреля 2020

Поскольку sbt документы JDK 8 и 11 как совместимые версии

Мы рекомендуем AdoptOpenJDK JDK 8 или AdoptOpenJDK JDK 11

, попробуйте управлять тем, какой JDK используется настройкой sbt через -java-home, которую можно настроить в масштабе всей системы через sbtopts запустить конфигурацию

/usr/local/etc/sbtopts

или для каждого проекта через


<project-root>/.sbtopts

Например, для настройте JDK, используемый sbt в текущем проекте, попробуйте установить в .sbtopts

-java-home /Users/picard/.sdkman/candidates/java/current
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...