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

时间:2018-02-15 21:19:49

标签: scala intellij-idea sbt sbt-plugin

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

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

我的问题很相似,但每一行都会发生。

image link

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

5 个答案:

答案 0 :(得分:12)

我在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项目的不同modules / build.sbt文件中的多个 (project in file("."))。在我看来,IntelliJ SBT多模块项目中只能有一个(project in file("."))。因此,有许多不同的Project(id="module_xyz", base = file("."))可以解决这个问题。

答案 1 :(得分:6)

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

答案 4 :(得分:-1)

从菜单中选择 - 文件 -> 使缓存无效...

单击无效并重新启动。为我工作