84

I've got a scala project that compiles, runs and tests fine when using SBT from the command line. However, when building the project in intellij, it seems every class in the project has this error in the event log, causing the build to fail:

SendCommandToService is already defined as case class SendCommandToService
case class SendCommandToService(service: String, commandName: String, keys: Array[String], values: Array[String])
       ^
4

13 に答える 13

41

これは、同じパッケージとクラス名を持つ 2 つのコンパイル済みクラスがクラスパスにあることを意味します。sbt でコンパイルされたもの、IntelliJ でコンパイルされたもの。

次のいずれかで問題を解決できるはずです。

  1. 直接インポートするのではなく、sbt-ideaでIntelliJ .iml ファイルを生成してみてください。
  2. Build -> Rebuild in IntelliJ をクリックする前に sbt clean
  3. IntelliJ で再構築するときは、sbt が実行されていないことを確認してください
于 2013-06-02T23:34:57.807 に答える
5

私は同じ問題を抱えていて、@Maxは正しいです。コンパイルされたクラスと競合していますが、提供された解決策はうまくいきませんでした。SBT インポートに関するIntellij IDEA 14 + scala プラグインのバグの回避策として、sbt-idea を使用して IDEA プロジェクト構造を生成していたことが判明しました。これは、これを書いている時点ではまだ修正されていません。

これを修正するには、 sbt-idea のバグのため、モジュール設定src_managed/main/controllerで競合していたものを削除する必要がありました。そのため、モジュールのソース フォルダーを再確認し、既にソースとして宣言されている親フォルダーと競合するサブフォルダーがないことを確認してください。src_managed/main

于 2014-11-15T18:35:05.513 に答える
0

sbt のコンパイル後、これらのファイルをコンパイルする必要があるため、フォルダーをGenerated Sources Rootとしてマークする必要がありました。

于 2016-10-31T08:12:26.837 に答える