Сбой компиляции Intellij: "уже определен как"
У меня есть проект scala, который компилирует, запускает и проверяет при использовании SBT из командной строки. Однако при создании проекта в intellij кажется, что каждый класс проекта имеет эту ошибку в журнале событий, что приводит к сбою сборки:
SendCommandToService is already defined as case class SendCommandToService
case class SendCommandToService(service: String, commandName: String, keys: Array[String], values: Array[String])
^
Ответы
Ответ 1
Это означает, что в вашем пути к классам есть два скомпилированных класса с идентичным именем пакета и класса. Один из них составлен sbt, один из которых составлен IntelliJ.
Один из следующих способов должен решить проблему:
- попытайтесь создать файл IntelliJ.iml с sbt-idea, а не импортировать напрямую.
- sbt clean перед нажатием кнопки Build → Rebuild in IntelliJ
- при перестройке с помощью IntelliJ убедитесь, что sbt не запущен.
Ответ 2
Для меня причина в том, что оба myproject/src
и myproject/src/main/scala
отмечены как Источник. Поэтому intellij не удалось построить myproject/src/main/scala
из-за вышеперечисленных ошибок. Исключить источник из myproject/src
(в intellij, File- > Структура проекта, выберите myproject Module, выберите папку src на вкладке Sources, удалите ее из Source в панели "Add Content Root" ), решив проблему. Надеюсь, это поможет.
Ответ 3
У меня была та же проблема, и @Max прав, есть конфликт с скомпилированными классами, но предоставленное решение не сработало для меня. Оказывается, я использовал sbt-идею для создания структуры проекта IDEA в качестве обходного пути Intellij IDEA 14 + scala ошибка плагина на импорт SBT, который пока не исправлен, я пишу это.
Чтобы исправить это, мне пришлось удалить src_managed/main/controller
, который был в конфликте с src_managed/main
в настройках модуля из-за ошибки sbt-idea. Поэтому дважды проверьте исходные папки вашего модуля и убедитесь, что у вас нет подпапок, конфликтующих с родительской папкой, уже объявленной как источник.
Ответ 4
У меня была аналогичная проблема неоднократно как внутри Idea, так и без нее: plain SBT.
Оказалось, что CVS хранит копии некоторых файлов *. scala в подкаталоге CVS/Base, который SBT, по-видимому, пытается скомпилировать. Проблема исчезла, когда я удалил подкаталоги CVS.
Ответ 5
В моем случае проблема была в протобуфе плагине идей:
- Удалите идею плагина protbuf.
- Закрыть идею
- Удалите все папки, связанные с идеей (.idea и .idea_modules)
- Откройте идею и снова импортируйте проект.
Ответ 6
После компиляции sbt мне пришлось пометить папку как Generated Sources Root, потому что мне нужны эти файлы для компиляции.