2013-06-02 11 views
35

Ho un progetto scala che compila, esegue e verifica correttamente quando si utilizza SBT dalla riga di comando. Tuttavia, quando si costruisce il progetto in IntelliJ, sembra ogni classe nel progetto ha questo errore nel registro eventi, causando l'accumulo di fallire:Errori di compilazione intellij: "è già definito come"

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

Hai provato Build -> Ricostruisci progetto? – drexin

+0

sì, ci ho provato. Grazie comunque. – Nick

risposta

21

Significa che ci sono due classi compilate con il pacchetto identici e il nome della classe trovato nel tuo classpath. Uno compilato da sbt, uno compilato da IntelliJ.

Uno dei seguenti dovrebbe essere in grado di risolvere il problema:

  1. tenta di generare IntelliJ .iml file con sbt-idea piuttosto che importare direttamente.
  2. sbt pulito prima di scegliere Genera -> Ricostruisci in IntelliJ
  3. quando la ricostruzione con IntelliJ, assicurarsi che non sia in esecuzione sbt
+0

Usando SBT e Play al di fuori di IntelliJ, ho messo a vendere "sbt clean" che finalmente ha fatto il trucco per me (anche se a un certo punto ho eseguito il downgrade di Scala 2.11 -> 2.10.4). –

+0

@JohnLockwood Ho ancora questo problema, ho disabilitato il cache, faccio 'sbt clean',' sbt compile' e ancora, il mio semplice script sta ricevendo un "è già definito come oggetto" .. Ho anche rinominato l'oggetto e il mio IntellIJ mi offre ancora l'opzione per eseguire l'oggetto precedente. – ypriverol

1

ho avuto un problema simile ripetutamente sia all'interno Idea e senza: pianura SBT.

Si è scoperto che memorizza CVS copie di alcuni * .scala file in sottodirectory CVS/Base, che a quanto pare cerca SBT per la compilazione. Il problema è andato via quando ho eliminato le sottodirectory CVS.

4

Ho avuto lo stesso problema e @Max ha ragione, c'è un conflitto con le classi compilate, ma la soluzione fornita non ha funzionato per me. Si scopre che stavo usando sbt-idea per generare la struttura del progetto IDEA come soluzione temporanea di un Intellij IDEA 14 + scala plugin bug all'importazione di SBT, che non è ancora stato risolto nel momento in cui scrivo questo.

Per risolvere il problema, ho dovuto rimuovere src_managed/main/controller che era in conflitto con src_managed/main nelle impostazioni del Modulo a causa di un sbt-idea bug. Quindi controlla le cartelle del tuo modulo e assicurati di non avere sottocartelle in conflitto con una cartella genitore già dichiarata come sorgente.

74

Per me, il motivo è che sia myproject/src sia myproject/src/main/scala sono contrassegnati come Origine. Quindi intellij non è riuscito a creare myproject/src/main/scala a causa di errori di cui sopra. Deselezionare Sorgente da myproject/src (in intellij, File-> Struttura progetto, selezionare il modulo myproject, selezionare la cartella src nella scheda Sorgenti, rimuoverlo da Source nel riquadro "Aggiungi radice di contenuto") risolto il problema. Spero che questo ti aiuti.

+0

Sì, questo è successo a me nel progetto misto Scala + Java. – expert

+0

Questo è successo quando ho spostato il mio progetto da 'src' a' src/main/scala'. –

+0

Ho avuto questo problema perché avevo definito un'attività in SBT per la generazione della fonte; IntelliJ non sa di eseguirlo durante la compilazione, o il fatto che il codice generato sia in target/scala-2.11/src_managed, quindi ho dovuto aggiungerlo come percorso di origine manualmente, e così facendo ho commesso l'errore di contrassegnare sia genitore e sottocartella come fonte, come descritto sopra. – Luciano

0

Nel mio caso, il problema è stato il protobuf Idea plug:

  1. Rimuovere il plugin idea protbuf.
  2. Chiudi Idea
  3. Rimuovere tutte le cartelle relative con l'idea (.idea e .idea_modules)
  4. aperta Idea e importare di nuovo il progetto.
0

Dopo la sbt compilare ho dovuto segnare la cartella come Fonti generati Root perché avevo bisogno di quei file per la compilazione.

0

È necessario modificare "Impostazioni -> Build, Execution, Deployment -> Compiler Scala -> Compile order" da "Mixed" a "Java then Scala". Se è stato compilato il progetto in precedenza, è necessario prima eseguire "sbt clean".

Problemi correlati