IntelliJ IDEA - sbt plugin - 'Тип выражения Def.Setting [...] должен соответствовать DslEntry в sbt файле'

Я искал похожие вопросы, я нашел это:

Тип выражения DslEntry должен соответствовать Def.SettingsDefinition в SBT файле в строке enablePlugins (JavaServerAppPackaging)

Моя проблема аналогична, но происходит в каждой строке.

image link

Когда я пытаюсь запустить, он компилируется и запускается успешно. Когда я нажимаю "Импорт проекта", желтое уведомление не исчезает, но проект перезагружается успешно. Если я переписываю любую строку, например, val _ = scalaVersion := "2.12.4", ошибка исчезает, но выглядит ужасно.

Ответы

Ответ 1

Я закрыл и удалил проект в IntelliJ, затем в папке проекта удалил подпапки project/, target/ и .idea/. Тогда остались только build.sbt и src/. После этого в IntelliJ я сделал: Файл → Новый → Проект из существующих источников → Импортировать проект из внешней модели → sbt.

Эта процедура создала новый файл проекта .idea.

Expression type Def.Setting[String] must conform to DslEntry in SBT file уже нет.

Надеюсь это поможет.

ОБНОВЛЕНИЕ 2018-11-17:

Когда вы тасуете модули и проекты в IntellIJ SBT, попробуйте заменить

lazy val root = (project in file("."))

с всегда выдающимся

lazy val root = Project(id="module_xyz", base = file("."))

В моем случае проблема была решена таким образом! Это произошло из-за наличия нескольких (project in file(".")) В разных файлах modules/build.sbt, принадлежащих одному и тому же проекту IntelliJ SBT. Мне кажется, что в многомодульном проекте IntelliJ SBT может быть только один (project in file(".")). Таким образом, наличие множества различных Project(id="module_xyz", base = file(".")) Может решить эту проблему.

Ответ 2

Я была такая же проблема. Это решение работало каждый раз. 1. Нажмите вкладку sbt правой стороны в IntelliJ Idea 2. Нажмите "Обновить символ"

Он будет переопределять зависимости Local cache и Gradle. Это.

Ответ 3

Вы также можете попробовать вырезать и вставить все в файле build.sbt в слово doc, импортировать изменения и затем вставить их обратно в файл build.sbt.