scalaコマンドラインからSBTを使用する場合にコンパイル、実行、テストを正常に行うプロジェクトがあります。ただし、intellijでプロジェクトをビルドすると、プロジェクト内のすべてのクラスにこのエラーが発生しますイベントログで、ビルドが失敗する原因:
SendCommandToService is already defined as case class SendCommandToService
case class SendCommandToService(service: String, commandName: String, keys: Array[String], values: Array[String])
^
クラスパスに同じパッケージとクラス名を持つ2つのコンパイルされたクラスがあることを意味します。 sbtによってコンパイルされたもの、IntelliJによってコンパイルされたもの。
次のいずれかが問題を解決できるはずです。
私にとっては、myproject/src
とmyproject/src/main/scala
の両方がソースとしてマークされているためです。したがって、上記のエラーが原因で、intellijはmyproject/src/main/scala
のビルドに失敗しました。 myproject/src
からソースのマークを外す(intellij、ファイル->プロジェクト構造、myprojectモジュールを選択、ソースタブでsrcフォルダーを選択、「コンテンツルートの追加」ペインでソースから削除)で問題が解決しました。お役に立てれば。
私は同じ問題を抱えており、@ Maxは正しい、コンパイルされたクラスとの競合がありますが、提供された解決策はうまくいきませんでした。 Intellij IDEA 14 + IDEAプラグインのバグの回避策としてsbt-ideaを使用してscalaプロジェクト構造を生成していたことが判明しました SBTインポートについては、これを書いている時点ではまだ修正されていません。
それを修正するには、 sbt-idea bug のために、モジュール設定のsrc_managed/main/controller
と競合していたsrc_managed/main
を削除する必要がありました。したがって、モジュールのソースフォルダーを再確認し、既にソースとして宣言されている親フォルダーと競合するサブフォルダーがないことを確認してください。
「設定->ビルド、実行、展開-> Scalaコンパイラ->コンパイル順序」を「混合」から「Java次にScala」に変更する必要があります。以前にプロジェクトをコンパイルした場合は、最初に「sbt clean」を実行する必要があります。
私は、Idea内でもそうでない場合でも、同じような問題を繰り返していました。プレーンSBTです。
CVSはいくつかの*。scalaファイルのコピーをサブディレクトリCVS/Baseに保存し、SBTは明らかにコンパイルしようとしていることが判明しました。 CVSサブディレクトリを削除すると、問題はなくなりました。
私の場合、問題はprotobuf Idea plugin:
sbt compileの後、コンパイルにこれらのファイルが必要だったため、フォルダーをGenerated Sources Rootとしてマークする必要がありました。