Intellij编译失败:"已定义为"

Nic*_*ick 49 scala intellij-idea sbt

我有一个scala项目,在命令行中使用SBT时可以编译,运行和测试.但是,在intellij中构建项目时,似乎项目中的每个类都在事件日志中出现此错误,从而导致构建失败:

SendCommandToService is already defined as case class SendCommandToService
case class SendCommandToService(service: String, commandName: String, keys: Array[String], values: Array[String])
       ^
Run Code Online (Sandbox Code Playgroud)

jia*_*gok 106

对我来说,原因是这两个myproject/srcmyproject/src/main/scala被标记为源.因此,myproject/src/main/scala由于上述错误,intellij无法构建.取消标记来源myproject/src(在intellij,文件 - >项目结构中,选择myproject模块,在Sources选项卡中选择src文件夹,从"添加内容根"窗格中的Source中删除它)解决了问题.希望这可以帮助.

  • 是的,这发生在我的 Scala+Java 混合项目中。 (4认同)
  • 我遇到这个问题是因为我在SBT中定义了一个用于生成源代码的任务;IntelliJ 不知道在编译期间运行它,或者生成的代码位于 target/scala-2.11/src_management 下,所以我必须手动将其添加为源路径,这样做时犯了标记两个的错误父文件夹和子文件夹作为源,如上所述。 (2认同)

Max*_*Max 32

这意味着在类路径中找到了两个具有相同包和类名的已编译类.一个由sbt编译,一个由IntelliJ编译.

以下之一应该能够解决问题:

  1. 尝试使用sbt-idea生成IntelliJ .iml文件,而不是直接导入.
  2. sbt clean之前单击Build - > IntelliJ中的Rebuild
  3. 使用IntelliJ重建时,请确保sbt未运行


Dex*_*spi 21

我今天在 IntelliJ 2021.2.1 上遇到了这个问题,根据此页面,这是 IntelliJ 的 Scala 增量编译器的一些问题,因此解决方案是在“首选项”->“构建”中将“增量类型”从“IDEA”更改为“Zinc” 、执行、部署->编译器->Scala编译器


use*_*287 6

对我来说,解决方案是仔细检查 IntelliJ 中每个模块中的源文件夹。

File > Project Structure > Modules对于每个模块,请仔细检查是否Source Folders仅包含您想要的文件夹,例如src/main/scala,并且不包含任何生成的源(例如target/scala-2.12/src_managed/main.


Baz*_*une 5

我有同样的问题和@Max是对的,与编译的类有冲突,但提供的解决方案对我不起作用.事实证明,我正在使用sbt-idea来生成IDEA项目结构,作为SBT导入上的Intellij IDEA 14 + scala插件错误的解决方法,在我写这篇文章时尚未修复.

为了解决这个问题,我必须删除src_managed/main/controllersrc_managed/main模块设置冲突的内容,因为有一个sbt-idea错误.因此,请仔细检查您的模块源文件夹,并确保没有与已声明为源的父文件夹冲突的子文件夹.