2013-06-02 16 views
35

コマンドラインからSBTを使用するときに、コンパイル、実行、およびテストを行うスケーラプロジェクトがあります。Intellijコンパイルの失敗: "既に定義されています"

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

ビルド - >リビルドプロジェクトを試しましたか? – drexin

+0

ええ、私はそれを試みた。しかし、ありがとう。 – Nick

答えて

21

これは、同一のパッケージとクラス名を持つ2つのコンパイルされたクラスがあることを意味します:IntelliJのでプロジェクトをビルドするときしかし、失敗し、ビルドを引き起こし、プロジェクト内のすべてのクラスは、イベントログにこのエラーを持っているようですあなたのクラスパスに見つかりました。 1つはsbtでコンパイルされ、もう1つはIntelliJによってコンパイルされたものです。

次のいずれかが問題を解決することができます:

  1. はIntelliJのは、直接sbt-ideaではなく、インポートを持つファイル.IML生成しよう。
  2. クリックビルド前にクリーンSBT - IntelliJのを再構築するとき>のIntelliJ
  3. に再構築
  4. 、SBTは、私は思想の範囲内とすることなく、両方の繰り返し同様の問題があった
+0

SBTを使用してIntelliJ以外のプレイを使用すると、「sbt clean」のためにupvotedされましたが、最終的には私のトリックでした(ただし、ある時点でScala 2.11 - > 2.10.4もダウングレードしました)。 –

+0

@JohnLockwood私はまだこの問題を抱えていますが、キャッシュを無効にして、 'sbt clean'、' sbt compile'を実行しても、私の単純なスクリプトは "既にオブジェクトとして定義されています" IntellIJは以前のオブジェクトを実行するオプションを引き続き提供しています。 – ypriverol

1

を実行していないことを確認してください:平野SBT。

これは、SBTは明らかにコンパイルしようとするサブディレクトリCVS /ベース、中にいくつかの* .scalaファイルのCVS店舗のコピーを判明。 CVSのサブディレクトリを削除すると、問題は解決しました。

4

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

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

74

理由は、myproject/srcmyproject/src/main/scalaの両方がソースとしてマークされているためです。だからintellijは上記のエラーのためmyproject/src/main/scalaをビルドできませんでした。 Unelf Mark from myproject/src(intellij、ファイル - >プロジェクト構造、myprojectモジュールを選択し、ソースタブでsrcフォルダを選択し、 "Add Content Root"ペインのSourceから削除する)問題を解決しました。お役に立てれば。私の場合は

+0

うん、これはScala + Javaの混在プロジェクトで私に起こった。 – expert

+0

これは、プロジェクトを 'src'から' src/main/scala'に移動したときに起こりました。 –

+0

SBTでソースを生成するタスクを定義していたため、この問題が発生しました。 IntelliJはコンパイル時にこれを実行するか、生成されたコードがtarget/scala-2.11/src_managedの下にあることを知らないので、ソースパスとして手動で追加する必要がありました。親とサブフォルダをソースとして使用します。 – Luciano

0

、問題がいるProtobuf アイデアプラグインた:アイデアprotbufプラグインを削除

  1. 閉じるアイデア
  2. オープンアイディアとインポート再度プロジェクトをアイデア(.ideaと.idea_modules)に関連するすべてのフォルダを削除します。
0

SBTがをコンパイルした後、私はコンパイルのためにそれらのファイルを必要とするので生成されたソースルートとしてフォルダをマークしなければなりませんでした。

0

「設定 - >ビルド、実行、デプロイメント - >スカラーコンパイラ - >コンパイル順」を「混合」から「JavaとScala」に変更する必要があります。 プロジェクトを前にコンパイルした場合は、最初に "sbt clean"を実行する必要があります。

関連する問題