progetto di Scala non compilerà in Eclipse; "Non è stato possibile trovare la classe principale."

StackOverflow https://stackoverflow.com/questions/3953468

Domanda

ho installato Eclipse 3.5.2 e Scala di oggi Plugin da / update-corrente (che è Scala 2.8 finale.) Posso compilare ed eseguire progetti Scala costituite da un singolo oggetto Singleton che implementa main ().

Ma, se un progetto contiene più classi, ricevo l'errore "Impossibile trovare la classe principale".

Ho provato a cercare la soluzione e ho scoperto:

Eclipse è correttamente cercando il $ classe principale, non il principale classe di
* In Debug configurazioni, la mia classe principale è correttamente identificato come mypackage.Main
* Il mio plugin è aggiornato e consigliato per la mia versione di Eclipse
* Pulizia, riavvio ecc non aiuta.

Lo stesso progetto verrà compilato con scalac.

Grazie per tutte le idee su come risolvere questo.

EDIT: MatthieuF suggerito devo inviare il codice.

Questo frammento di codice genera un errore. Non è il codice più idiomatica, ma ho scritto in questo modo per testare il mio ambiente. L'ho provato come un singolo file e come file separati. Funziona con scalac.

import swing._

class HelloFrame extends Frame {
        title = "First program"
        contents = new Label("Hello, world!")
}

object Hello {
  val frame = new HelloFrame    
  def main(args : Array[String]) : Unit = {
        frame.visible = true
   }
}

Ma, se il nido la definizione di HelloFrame all'interno Ciao, funziona. Questo frammento di codice funziona perfettamente:

import swing._

object Hello {

    class HelloFrame extends Frame {
        title = "First program"
        contents = new Label("Hello, world!")
    }

    val frame = new HelloFrame

    def main(args : Array[String]) : Unit = {
        frame.visible = true
    }
}
È stato utile?

Soluzione

Per quanto mi riguarda, il problema era che c'era un errore di generazione (vedi scheda Problemi) che era la compilazione prevenzione; oops! Il motivo per cui si vede l'errore è che la corsa macro procede nonostante la fase di compilazione fallito, e tentativi per eseguire file di classe che si aspetta di essere lì; non esistono perché c'era un errore di generazione impedendo compilazione, in modo che dice che non riesce a trovare principale (non compilato).

problema scompare quando build può completare con successo, vale a dire gli errori sono fissi.

Credo che, in teoria ragioni, non ci può essere più complicato la build non è completando con successo che non sono elencati in Problemi.

Altri suggerimenti

Una possibilità è che si sta tentando di lanciare utilizzando ctrl-F11, ma da una classe diversa.

Il plug-in di Eclipse Scala non obbedisce le impostazioni predefinite per Java lancio. In Preferenze> Esegui / Debug-> lancio, ci sono alcune opzioni di avvio Operation> Sempre avviare l'applicazione selezionata in precedenza, ecc Questo attualmente non funziona nella Scala Plug-in Eclipse. Per avviare un specificato principale, è necessario avviarlo dal l'editor per la classe.

C'è stato un errore sollevato per questo. http: //scala-ide.assembla.com/spaces/scala-ide/tickets/1000023-scala-launch--does-not-follow-jdt-behaviour

EDIT:. Questo è ora (per lo più) fissa

Per me è stato problema specifico Eclipse. Ho notato che il file .class non è stata costruita a tutti. Così directory bin non ha classi compilate. Quando ho compilato manualmente * .scala file utilizzando * .sbt e copiato nella directory bin stava funzionando come previsto. Ho provato diversi suggerimenti e trucchi e non è stato lavorato fino I reinstallato Scala plug-in Eclipse .

mi piacerebbe risolvere il problema simile da executig "Progetto-> Clean .." con successiva costruzione automaticamente.

Ho avuto lo stesso messaggio di errore con un'applicazione Java fatta da me.

Il problema è stato che ho cancellato (anche se all'interno di Eclipse) un barattolo che apparteneva al Java percorso di generazione , senza eliminarla dal percorso di generazione Java (finestra delle proprietà del progetto). Quando ho fatto la classe potrebbe compilare ed eseguire di nuovo.

Assicurarsi che i file esistono .class, di solito sotto la directory bin.

In particolare, se si dispone di errori nei file non collegati nello stesso progetto, allora la compilazione potrebbe non riuscire, e verrà prodotto nessun file .class.

Non ci può essere il caso dei progetti, contenente errori, aggiunte al percorso di generazione della domanda, che impedisce il completamento della compilation di successo. Assicurarsi di rimuovere tale progetto dal percorso di generazione prima di eseguire l'applicazione.

La rimozione di questi progetti ha risolto il problema per me.

Avete una corretta messa a punto tool di creazione? Come sbt hai installato?

È possibile controllare la sua versione di $ SBT --version

Se non si tratta di setup è possibile scaricare da qui http: //www.scala-sbt. org / download.html

Si potrebbe essere necessario riavviare l'Eclipse dopo l'installazione.

Basta copiare il codice del file XXX.scala. Rimuovere il pacchetto e creare una nuova classe Scala. Incollare il codice XXX.scala. (Se si utilizza Maven, fare un Maven generazione pulita e.) Configurazione Eseguire di nuovo. Questo funziona per me.

Ho affrontato questo problema. Ho appena cancellato il nome del pacchetto, di classe scala creato, scritto lo stesso codice, Set Costruisci per "creare automaticamente". Infine, Funziona perfettamente bene.

check scala-ide.log

Per me il problema era che c'erano errori:

AppData \ Local \ Temp \ sbt_10d322fb \ xsbt \ ClassName.scala: 16: errore: non trovato: il valore enteringPhase     enteringPhase (currentRun.flattenPhase.next) {s} separatore fullName

Se si utilizza Intellij, directory marchio come root fonte

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top