L'editor non contiene un tipo principale


92

Sto solo esaminando il codice Scala di esempio sul sito Web di Scala, ma si è verificato un fastidioso errore durante il tentativo di eseguirlo.

Ecco il codice: http://www.scala-lang.org/node/45 . Eseguendolo su Eclipse, ho ricevuto questo messaggio "Editor non contiene un tipo principale" che ne impedisce l'esecuzione.

C'è qualcosa che devo fare ... cioè suddividere quel file in più file o cosa?

Risposte:


37

Ho molto questo problema con Eclipse e Scala. È utile pulire l'area di lavoro e ricostruire il progetto.

A volte Eclipse non riconosce correttamente quali file deve ricompilare :(

Modifica: il codice funziona correttamente in Eclipse


4
Ha fatto la stessa esperienza. Inoltre a volte mi è sembrato necessario chiudere e aprire il progetto.
Fabian Steeg,

Grazie @nuriaion e @Fabian, sì, riaprire il progetto lo ha fatto funzionare. Grazie ancora per i tuoi suggerimenti.
Helen Neely,

3
@Helen In Eclipse => Project => Clean puoi pulire i progetti, la ricostruzione verrà eseguita automaticamente ... Quindi non devi chiudere e riaprire il progetto.
nuriaion

l'apertura e la chiusura del progetto scala mi ha dato: Si sono verificati errori durante la costruzione. Errore durante la creazione dell'istanza del builder "ch.epfl.lamp.sdt.core.scalabuilder". Il plug-in "ch.epfl.lamp.sdt.core" non è stato in grado di istanziare la classe "scala.tools.eclipse.Builder". Impossibile inizializzare la classe scala.tools.eclipse.contribution.weaving.jdt.builderoptions.ScalaJavaBuilder Plug-in "ch.epfl.lamp.sdt.core" non è stato in grado di istanziare la classe "scala.tools.eclipse.Builder". Impossibile inizializzare la classe scala.tools.eclipse.contribution.weaving.jdt.builderoptions.ScalaJavaBuilder
Ustaman Sangat

87

In Eclipse, assicurati di aggiungere la tua cartella di origine nelle proprietà del progetto -> percorso di compilazione java -> origine. In caso contrario, la funzione main () potrebbe non essere inclusa nel progetto.


Notare che ciò può essere ottenuto anche trascinando e rilasciando i file in "src" nella vista Esplora cartelle.
Max von Hippel

Questo ha risolto il mio problema ma dopo aver chiuso e aperto il progetto.
Detto il

26

Devi assicurarti che i tuoi file .java siano nella cartella .src in eclipse. Ho avuto lo stesso identico problema fino a quando non l'ho capito.


26

Un modo più semplice è chiudere il progetto e riaprirlo.


21

Assicurati solo che la cartella in cui lavori sia aggiunta al percorso creato:

right-clickla tua cartella -> build Path->Use as source Folder

e ora dovrebbe trovarvi al suo maininterno.


6

Ho avuto lo stesso problema. Ho provato di tutto. E l'ho saputo

  1. I miei file .java non erano collegati e
  2. non sono stati inseriti nella cartella "src".

Cose che ho fatto:

Proprietà progetto >> Percorso build Java >> Sorgente

  • Eliminata la cartella "src" originale che era vuota utilizzando l'opzione "Rimuovi"
  • Aggiunta la fonte che conteneva i miei file .java di origine utilizzando l'opzione "Aggiungi cartella"

Questo ha risolto l'errore.


5

Puoi provare a eseguire la funzione principale dalla barra laterale del contorno di eclipse.

soluzione


Quando faccio questo, ho ricevuto un messaggio di errore: <project root> [in Tut_RMI] does not exit. (Il nome del progetto è Tut_RMI) Questo nome del progetto non è valido?
Casper

5
***

Basta chiudere e riaprire

*** il tuo progetto in Eclipse. A volte ci sono problemi di collegamento. Questo ha risolto il mio problema


3

Una soluzione rapida:

Innanzitutto, escludi il pacchetto: fai clic con il pulsante destro del mouse sul pacchetto sorgente >> Build Path >> Exclude

Quindi includilo di nuovo: fai clic con il tasto destro sul pacchetto sorgente >> Build Path >> Include


3

Quello che dovresti fare è creare un progetto Java, ma assicurati di mettere questo file nel file del pacchetto di quel progetto, altrimenti incontrerai lo stesso errore.

inserisci qui la descrizione dell'immagine


2

Quel codice è valido. Hai provato a compilarlo a mano usando scalac? Inoltre, hai chiamato il tuo file "rubrica", tutto minuscolo, come il nome dell'oggetto?

Inoltre, ho scoperto che Eclipse, per qualche motivo, imposta la classe principale su ".addressbook" invece di "addressbook".


Grazie Daniele, sì, il file si chiama "rubrica" ​​tutto minuscolo. Proverò a riaprire il progetto per vedere se questo aiuta.
Helen Neely,

2

dovresti creare il tuo file con

selezionando sul lato destro troverai il nome del tuo file,

sotto quella troverai la cartella src e fai clic con il pulsante destro del mouse seleziona -> opzione di classe

loro il tuo file dovrebbe essere creato


2

Assicurati che il tuo file .java sia presente nel pacchetto str o in qualche altro pacchetto. Se il file java con la funzione main è esterno a tutti i pacchetti, viene generato questo errore.


2

Ho affrontato il problema simile, risolto il problema facendo clic con il pulsante destro del mouse sul metodo principale nella vista struttura ed eseguito come applicazione Java.


1

Anch'io ho avuto questo problema. La soluzione è assicurarsi che eclipse abbia creato il progetto come progetto Java. Basta creare un nuovo progetto Java e copiare la classe nella cartella src (e importare le eventuali dipendenze). Questo dovrebbe risolvere il problema.


Grazie KullDox, per il tuo commento. Ho risolto da tempo il problema, ma spero che qualcun altro trovi utili le soluzioni qui.
Helen Neely

1

La risposta corretta è: la libreria Scala deve prima della libreria JRE nel percorso di compilazione.

Vai a Java Buildpath> Ordina ed esporta e sposta la libreria Scala in alto


1

Ho avuto questo problema con un progetto Java che ho importato dal file system (sotto Eclipse Helios). Ecco un suggerimento: il codice src non sembra essere stato compilato affatto, poiché non compare alcuna directory "bin".

Ho dovuto creare un progetto Java da zero (utilizzando la procedura guidata), quindi confrontare i .projectfile dei progetti non funzionanti e quelli funzionanti.

Il progetto che dà "Editor non contiene un tipo principale" aveva questo come "buildSpec" nel file .project:

<buildSpec>
</buildSpec>

Ma il progetto di lavoro aveva questo come "buildSpec":

<buildSpec>
    <buildCommand>
        <name>org.eclipse.jdt.core.javabuilder</name>
        <arguments>
        </arguments>
    </buildCommand>
</buildSpec>

L'ho copiato e il progetto importato ha funzionato.

So che la mia risposta è per Java, ma lo stesso potrebbe essere il problema per il tuo progetto Scala.


1

Può essere che il file che hai creato sia esterno alla cartella src (sorgente). Il tentativo di chiamare l'oggetto della classe (dal file situato nella cartella src) dal file .java all'esterno della cartella di origine restituisce lo stesso errore. Copia il file .java nella cartella di origine, quindi crealo. L'errore sparirà.


1

Ho avuto lo stesso problema. Avevo la classe principale fuori dal pacchetto src, in un'altra cartella. Lo sposto e correggo la cartella e risolto


1

esegui "eclipse -clean -refresh" dalla riga di comando. Questo ha risolto il problema per me quando tutte le altre soluzioni fallivano.


1

Questo potrebbe essere il problema con il percorso di build Java. Prova i passaggi seguenti:

  1. Vai alle proprietà del progetto
  2. Vai a java Build Path
  3. Vai alla scheda Origine e aggiungi la cartella src del progetto

Questo dovrebbe risolvere il problema.


1

Se è un progetto maven, controlla che il file java sia stato creato in src / main / java

Se non si ottiene, modificare il percorso JRE e creare i file java nella struttura delle cartelle sopra


0

Per me, in Eclipse 3.6, questo problema si verifica quando il mio metodo principale non è pubblico. Ho causato il problema avendo un metodo principale come questo:

static void main(String[] args) 

Il doppiatore non è stato in grado di rilevarlo da solo. Sono piuttosto sorpreso che Eclipse abbia trascurato questo.


0

Nel peggiore dei casi, crea di nuovo il progetto con tutte le importazioni dall'inizio. Nel mio caso nessuna delle altre opzioni ha funzionato. Questo tipo di errore suggerisce che c'è un errore nelle impostazioni del progetto. Una volta sono riuscito a risolverlo, ma una volta completati ulteriori sviluppi, l'errore è tornato. Ricreare tutto dall'inizio mi ha aiutato a capire e ottimizzare alcuni collegamenti, e ora sono sicuro che funzioni correttamente.


0

Segui i passaggi seguenti:

  1. Esegui il backup di tutti i tuoi file .java in un'altra posizione
  2. elimina l'intero progetto java
  3. Crea un nuovo progetto Java facendo clic con il pulsante destro del mouse su root e fai clic su nuovo
  4. ripristinare tutti i file in una nuova posizione !!

0

File >> Importa >> Progetti esistenti nell'area di lavoro >> Seleziona Archivio archiviato >> Sfoglia e individua il file >> Fine. Se è già importato in un altro modo, eliminalo e provalo in questo modo. Avevo lo stesso problema finché non l'ho provato.


0

Un'altra cosa da controllare: assicurati che il tuo file sorgente contenga la dichiarazione del pacchetto corretta corrispondente alla sottodirectory in cui si trova. L'errore menzionato dall'OP può essere visto quando si tenta di eseguire un "tipo principale" dichiarato in un file in una sottodirectory ma manca la dichiarazione del pacchetto.


0

Ho anche questo problema dopo aver cambiato la cartella di origine. La soluzione che ha funzionato è semplicemente modificare il file e salvarlo.


0

Prova "Aggiorna progetto". Una volta fatto ciò, è apparsa l'opzione Esegui come applicazione Java.


0

Nel mio caso particolare 'Hello World' la causa di questo problema era il fatto che il mio main()metodo era all'interno della Scala class.

Ho messo il main()metodo sotto la Scala objecte l'errore è scomparso.

Questo perché Scala objectin termini Java è l'entità con solo membri e metodi statici all'interno.

Questo è il motivo per cui Java public static void main()in Scala deve essere posizionato sotto object.

(Scala classpotrebbe non contenere elementi statici all'interno)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.