Eclipse "Errore: impossibile trovare o caricare la classe principale"


108

Ho un progetto in Eclipse sul mio laptop che ho inviato a Git https://github.com/chrisbramm/LastFM-History-Graph.git

Funziona completamente sul mio laptop e funziona / costruisce senza problemi ma sul mio desktop non Eclipse dà l'errore

Errore: impossibile trovare o caricare la classe principale lastfmhistoryguis.InputPanel

Ho provato a costruire il progetto da:

Project>Build Project

Ma non è successo niente. Ho impostato le PATHvariabili su questo computer su JRE6, JRE7 e JDK 1.7.0 anche se queste non sono impostate sul mio laptop.

Avevo il file Jar ( last.fm-bindings-0.1.1.jar ) che era nel mio .classpathfile che si trovava nella cartella C: \ Users \ Chris \ Downloads sul mio laptop, quindi non era incluso nell'albero git che ho recentemente portato nella cartella del progetto e commesso, ma non sono sicuro di averlo fatto bene. Anche questo potrebbe causare un problema, ma non c'è un argomento principale.

Non riesco a capire ora cosa devo controllare / modificare.


24
Hai provato Project> Clean and Project> Build Project?
javaCity

3
Più volte e non sembra aver funzionato
Chris,


percorso di classe ambientale del sistema include. In quale altro luogo devo cambiare e cosa dovrei fare nello specifico?
Chris,

Nel mio caso stavo correndo java .\bin\selenium-server-standalone-3.9.1.jarquando avrebbe dovuto esserejava -jar .\bin\selenium-server-standalone-3.9.1.jar
Coty Embry

Risposte:


40

Nel tuo classpath stai usando un percorso assoluto ma hai spostato il progetto su una nuova macchina con una struttura di file molto probabilmente diversa.

Nel tuo classpath dovresti quindi (e probabilmente in generale se vuoi raggruppare JARS con il tuo progetto), usare il percorso relativo:

Nel tuo .classpath cambia

<classpathentry kind="lib" path="C:/Users/Chris/Downloads/last.fm-bindings-0.1.1.jar" sourcepath=""/><classpathentry kind="lib" path="C:/Users/Chris/Downloads/last.fm-bindings-0.1.1.jar" sourcepath=""/>

per

<classpathentry kind="lib" path="last.fm-bindings-0.1.1.jar"/>

19
Come si cambierà questo?
Aequitas

Non ho vasi esterni ma sto affrontando problemi simili. stackoverflow.com/questions/49738153/…
Jesse

@Aequitas do "Esegui" -> "Esegui come" -> "Applicazione Java". una volta e imposterà automaticamente il percorso della classe. Vedi la risposta di Blamkin86. Le impostazioni del percorso di classe possono essere trovate in "Esegui" -> "Esegui configurazioni ...".
gkubed il

72

Se crei una classe java con public static void main(String[] args), Eclipse eseguirà quel metodo principale per te facendo clic con il pulsante destro del mouse sul file stesso o sul file nell'esploratore di progetto, quindi scegliendo:

"Esegui come" -> "Applicazione Java".

Una volta fatto questo, Eclipse memorizza le informazioni sulla tua classe, in modo che tu possa facilmente eseguire nuovamente la classe dal menu Esegui come (pulsante di riproduzione verde sulla barra degli strumenti) o dalla finestra di dialogo Esegui configurazioni.

Se successivamente SPOSTI la classe java (manualmente o comunque), scegli di nuovo

"Esegui come" -> "Applicazione Java",

dalla nuova posizione, Eclipse eseguirà la configurazione memorizzata originale, tenterà di richiamare questa classe dalla sua posizione originale, il che causa questo errore.


SOLUZIONE:
Per me, la soluzione era di andare alle configurazioni di esecuzione, (Pulsante di riproduzione verde -> Configurazioni di esecuzione) e rimuovere tutti i riferimenti alla classe. La prossima volta che corri

"Esegui come" -> "Applicazione Java"

Eclipse scriverà una nuova configurazione per la classe spostata e l'errore scomparirà.


2
Grazie..!! Questo ha funzionato per me. Il problema è iniziato quando ho cambiato il nome del progetto.
NixRam

+1 public static void main(String[] args)è quello che mi ha fatto. Ho accidentalmente avuto la firma sbagliata ( Maininvece di main). Quindi, è importante assicurarsi che la firma sia corretta. :)
Nicholas Miller

10
Come si "rimuovono tutti i riferimenti alla classe"?
aCarella

2
Ha funzionato come un fascino. Il mio problema era che ho creato un build.gradle e settings.gradle che stavano cambiando i nomi predefiniti associati al progetto. Rimozione dei riferimenti (esegui come -> esegui configurazioni -> rimuovi tutte le configurazioni associate al progetto)
randombee

1
"rimuovi tutti i riferimenti alla classe" - devo rimuovere tutte le configurazioni di esecuzione?
jcool

55

tl; dr : pulisci l'intero percorso di costruzione e tutto ciò che hai aggiunto manualmente. Ciò include fonti aggiuntive, progetti, biblioteche.

  • Progetto -> Pulisci
  • Assicurati che Project -> Build automatically sia attivo
  • Progetto -> Proprietà -> Percorso build Java -> Librerie: rimuovi tutte le librerie esterne che hai aggiunto . Non rimuovere le librerie standard come la libreria di sistema JRE.
  • Prova a tenere la tua lezione principale adesso. L'errore "Impossibile trovare / caricare la classe" dovrebbe essere scomparso. Prova ad aggiungere le tue librerie / jar esterne una dopo l'altra.

Motivo alla base di questo: il compilatore ha avuto problemi a collegare le librerie al progetto. Non è riuscito e ha prodotto un messaggio di errore errato.

Nel mio caso, avrebbe dovuto essere qualcosa come "Impossibile aggiungere AutoHotkey.dll al percorso di compilazione" perché era quello che ha fatto fallire il compilatore.


Se continua a non funzionare, dai un'occhiata all'ErrorLog integrato di Eclipse :

Finestra -> Mostra vista -> Generale -> Registro errori


27

Ho fatto tutte le cose sopra menzionate, ma nessuna ha funzionato per me

Il mio problema è stato risolto come segue:

  1. Fare clic con il pulsante destro del mouse sul progetto> Proprietà> JavaBuildPath> Librerie .
  2. Rimuovi il file jar, con una bandiera rossa su di esso.
  3. Se il problema persiste, prova la soluzione seguente. Questo ha funzionato per me quando ho affrontato questo problema la seconda volta:
    1. Right-Click pulsante Progetto> Proprietà> Percorso build Java> Librerie
    2. Rimuovi libreria
    3. Aggiungi libreria. (Scegli la libreria di sistema JRE)

ha funzionato per me! Avevo anche un punto esclamativo accanto al nome della mia cartella del progetto. Questo ha risolto anche quello
benzabill

Ha funzionato per me! Grazie
Dhruv Kaushal

1
questo ha funzionato semplicemente rimuovendo e aggiungendo nuovamente la stessa libreria Java JRE
Andrew Norman

Per me ha funzionato anche se non c'erano avvertimenti o punti esclamativi
Michał Leon

Fratello, hai letteralmente appena salvato il mio progetto AP Java, non ne hai idea, grazie mille
Rohan Singh

18

Ho affrontato un problema simile nel mio progetto di webapp maven dopo aver trascorso quasi un'ora, ho trovato una soluzione che ha funzionato per me.Ho digitato il seguente comando maven e ha funzionato

mvn clean install -U
Non conosco il motivo esatto dietro di esso.


1
Stessa cosa per me, inoltre non so perché sia ​​successo in primo luogo.
NSOF

In Eclipse, facendo clic con il pulsante destro del mouse su Run As..Maven clean, Run As..Maven installlo ha fatto per me. Il problema è iniziato quando ho cambiato un progetto java eclipse per diventare un progetto eclipse maven. +1 per indicare nella direzione giusta.
CodeMed

-U, - update-snapshots Forza un controllo per le versioni mancanti e gli snapshot aggiornati su repository remoti
Kanagavelu Sugumar

9

Suppongo che tu abbia importato il progetto nell'installazione di eclipse sul desktop? In tal caso, è sufficiente selezionare Progetto> Pulisci. Quindi ricostruisci il tuo progetto. Ha funzionato benissimo per me.


9

Ho avuto lo stesso problema e l'ho risolto usando:

Eclipse Mars
Egit
Github
Maven Project

Il problema era che ho reso il mio progetto Maven disponibile per GitHub. esso mosso mio progetto nella mia cartella GitHub.

Soluzione:

  • Chiudi Eclipse
  • Elimina la cartella dei metadati all'interno dell'area di lavoro
  • Riavvia Eclipse

Verrà visualizzata la schermata iniziale.

  • Chiudi la schermata iniziale
  • Fare clic con il pulsante destro del mouse su Esplora pacchetti
  • Scegli "importa progetto maven",
  • Passa alla tua cartella GitHub e importa il progetto Maven.

Dopo questo il mio progetto è stato compilato con successo.


7

Verifica che il tuo progetto abbia un builder in uno dei seguenti modi:

  • controlla le proprietà del progetto (in "Esplora pacchetti", fai clic con il pulsante destro del mouse sul progetto, seleziona "Proprietà"), lì la seconda sezione è "Costruttori", e dovrebbe contenere il "Java Builder" predefinito
  • oppure guarda nel file ".project" (in ... / workspace / yourProjectName / .project) la sezione "buildSpec" non dovrebbe essere vuota.

Devono esserci altri modi, ma quello che ho fatto è stato:

  • spegni eclipse
  • modificare il file. "progetto" per aggiungere la sezione "buildSpec"
  • riavviare eclipse

Un file ".project" Java minimo corretto dovrebbe avere il seguente aspetto:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
        <name>myProjectName</name>
        <comment></comment>
        <projects>
        </projects>
        <buildSpec>
                <buildCommand>
                        <name>org.eclipse.jdt.core.javabuilder</name>
                        <arguments>
                        </arguments>
                </buildCommand>
        </buildSpec>
        <natures>       
                    <nature>org.eclipse.jdt.core.javanature</nature>
        </natures>      
</projectDescription>

1
Questo ha risolto il problema per me. Non è necessario chiudere Eclipse per modificare il .projectfile, è sufficiente chiudere il progetto.
Luís de Sousa

Io, d'altra parte, ho appena chiuso Eclipse (ma non ho modificato il .projectfile. Ho riattivato Eclipse e ha funzionato: l'errore era sparito.
Shahar

6

Bene, quanto segue ha funzionato per me ...

  1. Sono andato nella cartella del progetto (all'interno workspace )
  2. Quindi, ha eliminato il file bin cartella
  3. Quindi, progetto / progetti puliti (in Eclipse)
  4. costruito / eseguito da Eclipse.

Benvenuto in SO, DeeCod. L'eliminazione della cartella bin ed eseguire un "progetto> pulire" e costruire è già stato suggerito in altre risposte. Piuttosto che pubblicare un "anch'io" come risposta, consiglierei di ottenere una reputazione sufficiente (ne bastano 50) per pubblicare commenti e confermare che un particolare approccio ha funzionato per te in un commento.
Amos M. Carpenter

1
Grazie Amos! Comunque mi dispiace se sbaglio, per quanto vedo -> L'eliminazione del cestino prima di Pulire / ricostruire non è suggerita in altre risposte in questo thread ... Just Clean> build non ha funzionato nel mio scenario ... fintanto che questo aiuta qualcuno :)
DeeCode

Nessun problema: mi sono imbattuto in molti di questi scenari in cui provare combinazioni di cose strane improvvisamente funziona senza una ragione apparente. ;-)
Amos M. Carpenter

4

Una cosa simile mi è successa poche volte, l'unico modo che sapevo per risolvere questo problema era rimuovere la cartella dei metadati. Per fortuna ho trovato un altro modo.

Prova ad andare alle proprietà del progetto > Percorso build Java> scheda Ordina ed esporta> seleziona tutto (o prova a giocare con le caselle di controllo lì).

Ciò dovrebbe causare la ricostruzione completa del progetto e la visualizzazione della classe principale da parte di Eclipse.

Aggiunta: ho notato che questo bug si verifica quando hai molti progetti in uno spazio di lavoro e alcuni di essi sono configurati in modo errato (appare un punto esclamativo rosso). La correzione del percorso di compilazione del progetto e altre impostazioni (anche se questo progetto non è correlato a quello con cui hai problemi) dovrebbe risolvere un problema.


4

Il mio Main classproblema non è stato trovato o caricato è causato da un motivo interessante.

Nel nostro progetto, stiamo usando Mavencome strumento di compilazione e la mia main class extendsclasse a, che si trova in class pathma il suo ambito era test, mentre main classnon è nel pacchetto di test.

Se la tua classe principale è extendsuna classe, prima prova a eseguire la tua main classrimuovendo extendsparte. Se funziona, capirai almeno che il problema non è dovuto run configurationo eclipsema la classe, la tua main class extends.


4

Per me, il motivo per cui questo errore ha iniziato a comparire era dovuto al fatto che il percorso di classe superava il limite su Windows. Poi ho scoperto l'opzione "Usa JAR temporaneo per specificare classpath (per evitare limitazioni di lunghezza del classpath)". La selezione di questa opzione ha risolto il problema per me. L'opzione risiede in Run / Debug Configuration, scheda Classpath, vedere l'immagine sotto.

inserisci qui la descrizione dell'immagine


3

Questo problema si verifica anche quando sono presenti caratteri speciali nel percorso dell'area di lavoro. Avevo il mio spazio di lavoro nella mia cartella personale e il suo nome era in greco, quindi non funzionava. Ho cambiato il mio spazio di lavoro, ora contiene solo caratteri inglesi nel suo percorso, e ora il progetto è costruito senza problemi.


3

Se stai usando eclipse, i seguenti passaggi risolveranno il tuo problema:

Vai a Esegui -> Esegui configurazioni -> Ricerca classe principale -> Individua la tua classe manualmente -> Applica -> Esegui


3

Ho avuto questo errore. Era perché avevo static void main(String[] args)
invece di public static void main(String[] args)

Ho passato quasi un'ora a cercare di capirlo.

Nota: l'unica differenza è che non ho dichiarato maindi esserlopublic


3

Se il tuo codice è buono e sai di avere un problema con Eclipse, questo lo risolverà.

Puoi semplicemente eliminare $ yourproject / .classpath, $ yourproject / .project e $ yourworkspace / .metadata. Qualcun altro ha menzionato questa opzione. Tuttavia, farà saltare in aria l'intero spazio di lavoro. Anziché:

  1. Elimina .classpath e .project dal tuo progetto
  2. Elimina il tuo progetto in Eclipse. NON controllare eliminazione dei contenuti del progetto su disco.
  3. Ora, in un file explorer, vai in $ yourworkspace / .metadata.
  4. Cerca $ nomeprogetto
  5. Elimina tutto ciò che trovi. Dovrebbe essere sicuro eliminare qualsiasi cosa nella directory .metadata.
  6. In eclipse: File> Importa> Generale> Progetti da cartella o archivio> $ yourproject> finish
  7. Fare clic con il pulsante destro del mouse sul progetto> proprietà> Percorso build Java> scheda Origine
  8. Seleziona tutte le cartelle di origine, rimuovi.
  9. Aggiungi cartella, seleziona src (qualunque sia la tua cartella src) e aggiungila
  10. Vai alla scheda Librerie
  11. Aggiungi qui eventuali barattoli al tuo percorso di costruzione. Non dovrebbero esserci più errori nel tuo progetto ora.
  12. Esegui il tuo progetto come faresti normalmente.

I sovrascrivere il .classpathe il .projectfile con i file da un altro progetto, e ha funzionato ... è che una coincidenza o il percorso di classe è davvero ciò che conta?
Amarth Gûl

Probabilmente una coincidenza poiché quei file sono specifici del tuo progetto. Potresti aver inconsapevolmente fatto rigenerare da eclipse quei file introducendo errori. Apri il file e leggilo e avrai un'idea di cosa fanno. Classpath contiene le directory delle cartelle libs e src e .project memorizza i plugin e le faccette del progetto
Brent Sandstrom

3

questo potrebbe causare la presenza di librerie jdk se fosse stato importato in jre

questo accade a me, quindi controlla jre jar installati

in eclipse fai clic su Windows> Preferenze> Java> Jres installati> fai clic su Jre e modifica dopo aver esaminato l'elenco dei jar assicurati che nessuno sia di jdk o danneggiato, inserisci qui la descrizione dell'immagine


2

Mi imbatto nello stesso problema, ma nel mio caso è stato causato dalla cartella di origine (vuota) mancante (esiste nel progetto originale, ma non nel repository GIT perché è vuoto).

Dopo aver creato la cartella mancante tutto funziona.


2

Ho ricevuto anche questo errore, subito dopo aver spostato alcune risorse. Controllando il registro degli errori, ho visto che Eclipse non poteva fare una build poiché non poteva rimuovere un file / cartella. Prova a rimuovere manualmente la cartella "bin" (o come viene chiamata per te).

Questo ha funzionato almeno per me.


Sì. dopo aver spostato il progetto in git. Il problema si verifica. Provo questo e devo anche "chiudere il progetto" e "aprire il progetto" per fare il trucco.
Yeung

2

Oggi mi sono imbattuto in questo errore perché ho impostato un programma Hello World e quindi ho tagliato e incollato un nuovo programma nello stesso file. Per risolvere il problema di non trovare hello world poiché l'ultimo è stato chiamato ho fatto clic su Esegui-> Esegui configurazioni e quindi sotto Classe principale ho fatto clic su Cerca e ha trovato il mio nuovo nome di classe e lo ha sostituito con il nuovo nome corretto nel testo che ho incollato . Questo è un problema per principianti che conosco ma è anche facile da risolvere. Spero che questo aiuti qualcuno! Douglas


2

Ho avuto lo stesso problema con il file .classpath corretto e presto ho scoperto che in realtà non era il file .classpath contato (dopo aver risolto questo problema, ho sostituito il file .classpath funzionante con quello originale, il progetto funzionava ancora, il che significa che il file. il file classpath non era il caso)

Dato che è un progetto Maven, tutto ciò che ho fatto è stato:

  1. mvn eclipse: pulito
  2. elimina il progetto eclipse
  3. importa il progetto
  4. fatto

spero che sia d'aiuto!


2

Principalmente questo accade, perché Eclipse pulisce i .classfile, ma non li ricostruisce. Controlla la bincartella, dovrebbe essere vuota. Quindi dovresti controllare se c'è qualcos'altro che sta causando il fallimento della build. Potresti aver aggiunto alcuni vasi in classpath, che Eclipse potrebbe non essere in grado di trovare.


2

Vai al tuo Package Explorer e premi F5, o per alcuni laptop fn + F5. Il motivo è che eclipse pensa che i file siano da qualche parte, ma i file in realtà sono da qualche altra parte. Aggiornandolo, li metti entrambi sulla stessa pagina. Non preoccuparti, non perderai nulla, ma se vuoi stare molto attento, fai semplicemente il backup dei file dalla cartella dei tuoi progetti java in un posto sicuro.


Questo ha funzionato per me. Ho riscontrato il problema dopo l'aggiornamento a una versione più recente di Eclipse. È un progetto gradle e gradle clean eclipse non ha risolto il problema. Ha fatto un semplice aggiornamento.
Navetta

2

Questi sono i semplici passaggi che mi hanno aiutato a risolvere questo problema.

  1. Chiudi l'eclissi
  2. Elimina la cartella ".metadata" nel tuo spazio di lavoro. (potrebbe essere una cartella nascosta)
  3. Apri l'eclissi (creerà automaticamente la cartella ".metadata" nel tuo spazio di lavoro)
  4. Prova a eseguire il programma.

Questo svincolerà il mio progetto dall'area di lavoro. Dovrai importare di nuovo tutti i tuoi progetti!
Muhammad Gelbana

Sono d'accordo con @MuhammadGelbana, ho cancellato il .metadata e ha fatto saltare il mio spazio di lavoro. Fai molta attenzione quando provi questa soluzione.
TYMG

2

Per risolvere questo errore, procedi nel seguente modo:

Passaggio 1: apri il file .project .

Passaggio 2: verifica due tag ...

    a) <buildSpec>

    b) <natures>

Passaggio 3: se i tag sopra menzionati non includono alcun contenuto, sicuramente si verificherà l'errore precedente.

Passaggio 4: aggiungi il seguente contenuto a ciascun tag per risolvere l'errore precedente.

Per <buildSpec>:

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

Per <natures>:

<natures>
    <nature>org.eclipse.jdt.core.javanature</nature>
</natures>

Passaggio 5: salva il file premendo ctrl + s.

Passaggio 6: per sicurezza, chiudere una volta il progetto e riaprirlo.

Passaggio 7: è tutto. Sei pronto per il rock !!!

Si prega di menzionare nei commenti se la soluzione è stata utile.

Grazie.


2

Controllare il registro degli errori dell'area di lavoro (Windows-> Mostra vista -> Registro errori). Se vedi che uno dei file jar importati è danneggiato, rimuovi la cartella del repository corrispondente e reimportalo di nuovo.


2

2 tipi di soluzioni escono per lo stesso.

(1) Vai a eseguire configurazioni: - run-> run configurazioni Nella scheda Classpath:

Seleziona Advanced Add dove Eclipse di solito inserisce * .class per i progetti, che è in bin. Quindi ho aggiunto la directory bin per il progetto.

(2) Se la prima soluzione non funziona, significa che il vaso che stai indicando al tuo progetto sta prendendo il percorso del tuo repository Maven locale che non viene aggiornato al tuo progetto, quindi è meglio controllare il vaso da quel repository locale di maven e copialo e incollalo nel nuovo progetto semplicemente o scaricalo da qualsiasi sito e configuralo nel tuo percorso di build.

Spero possa essere d'aiuto.


1

Ho avuto lo stesso problema. Ho trascorso alcune ore e finalmente ho cambiato il mio spazio di lavoro nella cartella locale e ora tutto funziona. Forse fa risparmiare tempo agli altri. Jon


1

Ho appena avuto questo problema dopo aver avuto il problema di Windows 8 che si rifiutava di aggiornare il mio percorso, indipendentemente da cosa avessi impostato su JAVA_HOME - java -version ha segnalato l'ultimo JDK invece di quello che ho memorizzato in JAVA_HOME. Finalmente l'ho fatto funzionare mettendo '% JAVA_HOME% / bin;' all'inizio della variabile d'ambiente del percorso invece che alla fine. Poi ho lanciato Eclipse e all'improvviso non riusciva a trovare la mia classe principale quando funzionava bene prima di questo. Quello che ho fatto per risolverlo è stato accedere alle proprietà del progetto, rimuovere la libreria JRE esistente dalla scheda librerie, aggiungere un nuovo JRE selezionando il pulsante "Aggiungi libreria" e quindi seguire le istruzioni per installare JRE 7 come JRE predefinito. Ora tutto è tornato a funzionare.


1

Ho trovato altra soluzione nel mio caso questo problema: Eclipse->Preferences->Java->Installed JREquindi premere il pulsante Cerca. Seleziona la cartella in Linux, /usrquindi Eclipse ha trovato tutta la JVM.

Seleziona un'altra JVM troppo attuale . È risolto per il mio caso.

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.