IntelliJ IDEA - sbt 插件 - '表达式类型 Def.Setting [...] 必须符合 sbt 文件中的 DslEntry'

Posted

技术标签:

【中文标题】IntelliJ IDEA - sbt 插件 - \'表达式类型 Def.Setting [...] 必须符合 sbt 文件中的 DslEntry\'【英文标题】:IntelliJ IDEA - sbt plugin - 'Expression type Def.Setting[...] must conform DslEntry in sbt file'IntelliJ IDEA - sbt 插件 - '表达式类型 Def.Setting [...] 必须符合 sbt 文件中的 DslEntry' 【发布时间】:2018-07-26 18:06:04 【问题描述】:

我找了类似的问题,我发现了这个:

Expression type DslEntry must conform to Def.SettingsDefinition in SBT file at line enablePlugins(JavaServerAppPackaging)

我的问题类似,但在每一行都会发生。

当我尝试运行时,它编译并成功运行。 当我单击“导入项目”时,黄色通知没有消失,但项目重新加载成功。 如果我将任何行重写为val _ = scalaVersion := "2.12.4",错误就会消失,但看起来很糟糕。

【问题讨论】:

您是否将项目导入为sbt project?您使用的是哪个版本的 Idea & Scala 插件? 是的,甚至显示在 sbt 工具窗口上。我刚刚更新了 Idea 及其插件,Idea 位于 2017.3.4 Build #IU-173.4548.28 Scala 插件位于 2017.3.11.1 我也有同样的问题。 这些错误在 2021 年仍未修复,并且永远不会修复。所有这些伏都教解决方案有时有效,有时无效,因为它们没有识别和处理根本的有缺陷的设计。 【参考方案1】:

我有同样的问题。这个解决方案每次都对我有用。 1.点击IntelliJ Idea右侧的sbt tab 2. 点击刷新符号

它将重新验证本地缓存和 Gradle 依赖项。 就是这样。

【讨论】:

谢谢 - 一个更简单的解决方案。一件事 - 项目/sbt 文件必须出现在 sbt 选项卡中。如果它不存在或没有显示,请使用 sbt 选项卡顶部工具栏上的 + 按钮来显示它。 完成此操作后,我必须在红线消失之前重新启动 intellij。【参考方案2】:

我在 IntelliJ 中关闭并删除了项目,然后,在我的项目文件夹中,我删除了子文件夹 project/target/.idea/。然后只剩下build.sbtsrc/。之后,在 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("."))

就我而言,问题是这样解决的!它发生在属于同一个 IntelliJ SBT 项目的不同模块/build.sbt 文件有多个 (project in file("."))。在我看来,IntelliJ SBT 多模块项目中只能有一个(project in file("."))。所以有很多不同的Project(id="module_xyz", base = file(".")) 可以解决这个问题。

【讨论】:

包重新洗牌之后,我遇到了 sbt 的一些构建问题,所以我删除了 .ideatarget 并删除了 sbt clean --clean-files 以及在build.sbt 中进行了一些更改。此后在IntelliJ 中打开项目开始给我这个错误。我所做的只是关闭项目,将其从IntelliJ最近打开的..列表中删除,然后重新导入作为sbt project 它就像一个魅力 [SBT 1.1.6, Scala 2.12.6, Java 1.8]【参考方案3】:

您还可以尝试将 build.sbt 文件中的所有内容剪切并粘贴到 word 文档中,导入您的更改,然后将其粘贴回 build.sbt 文件中。

【讨论】:

【参考方案4】:

我只是在我的系统上安装了最新的 sbt 版本并更新了 project/build.properties,所以它包含了新的版本号。这为我解决了这个问题。您可能必须手动触发 IntelliJ 中的刷新。

【讨论】:

以上是关于IntelliJ IDEA - sbt 插件 - '表达式类型 Def.Setting [...] 必须符合 sbt 文件中的 DslEntry'的主要内容,如果未能解决你的问题,请参考以下文章

更改后如何强制 IntelliJ IDEA 从 build.sbt 重新加载依赖项?

IntelliJ Idea 无法解析 Scala 管理源中的符号 (sbt-buildinfo)

使用本地 Artifactory 服务器配置 Intellij IDEA 15.0.4 和 SBT 0.13.7

如何使用 IntelliJ Idea 创建 SBT 项目?

IntelliJ Idea 找不到 sbt-idea-compiler-indices

在 IntelliJ IDEA 中找不到 SBT-shell