Errore: Impossibile trovare o caricare la classe principale nell'IDE IntelliJ


151

Sono un principiante in Java e sto cercando di eseguire il mio codice utilizzando IntelliJ che ho appena installato come IDE con JDK 1.7. Il seguente pezzo di codice continua non viene nemmeno compilato e continua a darmi l'errore:

Error: Could not find or load main class libTest

Codice

import java.lang.Integer;
import java.lang.String;
import java.lang.System;
import java.util.*;

class book {

    private String name = "trial";
    private int bookCode=1;
    private int issued=0;

     public void Issue(){
         if(issued==0) {
             issued=1;
             System.out.println("You have succesfully issued the book");
         }
         else {
             System.out.println("The book is already issued. Please contact the librarian for further details");
         }
    }

    public int checkCode() {
        return bookCode;
    }

    String readName() {
        return name;
    }

    public void setName(String newName){
        name=newName;
    }

    public void setBookCode(int newCode){
        bookCode=newCode;
    }
}

class library {
    private ArrayList books=new ArrayList();

    public void getList(){
        for(int bk:books){
            String bName=books(bk).readName();
            System.out.println((bk+1)+")  "+bName);
        }
    }
}

public class libTest{
    public static void main(String[] args){
        library newLib= new library();
        System.out.println("code working");
   }
}

C'è qualche cambiamento che devo fare nelle impostazioni del compilatore ?? O è il codice.


2
Qual è il nome del file sorgente? È vero libTest.java?
QuantumMechanic,

import java.lang...Ciò accade automaticamente per le classi nel langpacchetto.
Andrew Thompson,

Come menzionato da QuantumMechanic, la tua classe principale deve trovarsi in un file chiamato esattamente come questo. Quindi libTest deve trovarsi in un file java chiamato libTest.java, altrimenti il ​​compilatore java si lamenterà. Inoltre, hai creato l'origine tramite IDEA o hai creato un nuovo progetto IDEA sull'origine esistente?
Mcfinnigan,

tentato di importare java.lang non fece alcuna differenza
Mailman confuso

sono identici. C'è qualche altro motivo per cui un tale errore dovrebbe essere segnalato?
Mailman confuso,

Risposte:


178

Questo potrebbe aiutare:

1) Menu "Crea" -> " Rebuild Project". A volte Intellij non riscrive le classi perché esistono già, in questo modo chiedi a Intellij di riscrivere tutto.

2) Menu "Esegui" -> " Edit configuration" -> elimina il profilo -> aggiungi nuovamente il profilo ("Applicazione" se si tratta di un'applicazione Java), scegli la tua classe principale dal menu a discesa "Classe principale".

3) Menu "Crea" -> " Rebuild Project".


9
Avevo un nuovo progetto in IntelliJ e non avrebbe funzionato. Rebuild Projectha funzionato per me!
Danny Harding,

La seconda opzione ha funzionato per me. Ma cancella il profilo di configurazione e poi, fai clic con il tasto destro del mouse sulla tua classe -> esegui
NoName il

2
"Build" menu -> "Rebuild Project- ha fatto il lavoro! Grazie
Yan Khonski,

1
La prima opzione ha rebuild projectfunzionato per il mio problema. Grazie!
Khilo

1
Ho rimosso .idea, .mvn e altre directory di destinazione, quindi ho riavviato IntelliJ. Sono andato al registro degli eventi, ho aggiunto il progetto come progetto Maven e poi ho seguito i passaggi menzionati da @Kishore qui. Funziona ora.
Sunny Shekhar,

105

Se nessuna delle risposte precedenti ha funzionato per te, basta chiudere il tuo IDE intelliJ e rimuovere il file e la cartella IDE intelliJ dalla radice del progetto:

rm -rf .idea *.iml 

Quindi apri il progetto con intelliJ. Deve funzionare ora.


1
Questo ha funzionato per me. Ho anche reimportato il mio progetto in IntelliJ, ma per l'opzione "Moduli di gruppo" ho usato "usando nomi qualificati" (invece di "usare gruppi di moduli espliciti".
markhops

3
L'eliminazione della .ideacartella risolve sempre tutti i problemi con gli IDE di JetBrains :)
shelll

questo ha funzionato anche per me, sono un grande fan di Intellij, ma anche loro devono imparare a fare cose semplici.
Zwakele Mgabhi,

Più di 30 minuti sprecati. finalmente questo è quello che dovevo fare per far funzionare le cose
vins

Solo questo metodo in questa pagina funziona per me.
zionpi,

82

Per me la soluzione è stata quella di correggere la directory di output nelle impostazioni del progetto. Prima stavo usando solo "target" per l'output del compilatore del progetto. Invece l'ho aggiornato per avere un percorso completo, ad esempio D: \ dev \ sigplusjava2_68 \ target inserisci qui la descrizione dell'immagine


10
questo non mi ha aiutato
Pavel

È possibile che la mia soluzione qui sia in realtà una sottile variazione della risposta di @ Ehsan di seguito. Forse specificando la directory di destinazione gli dà una nuova posizione in cui compilare tutti gli oggetti essenzialmente eseguendo lo stesso lavoro di a Rebuild Project.
Zio Iroh,

1
@UncleIroh Se ha fatto lo stesso lavoro, ricostruendo + leggendo la configurazione. avrebbe risolto il problema inizialmente. Non ha funzionato, ma la tua soluzione ha funzionato.
hyperum,

Questa dovrebbe essere la risposta accettata. Mi infastidisce sempre di nuovo ..: p
Christopher Stock

37

Ho avuto questo problema e ho provato tutto sotto il sole che mi veniva in mente e su questo sito.

Nessuna delle mie lezioni su Java è stata raccolta dopo che mi sono ritirato da un ramo remoto. Tutte le classi avevano J rossi con i loro nomi nella Gerarchia del Progetto, non C blu.

Alla fine, ho provato a seguire questo tutorial e alcuni passaggi hanno provato qualcosa che non è stato descritto e risolto il problema: https://www.jetbrains.com/help/idea/creating-and-managing-modules.html

Ecco cosa ho fatto:

  1. Vai a File | Struttura del progetto o premere Crtl + Maiusc + Alt + S
  2. Seleziona Moduli nella sezione Impostazioni progetto.
  3. Nella scheda Sorgenti fai clic su Sorgenti nella riga "Segna come:".
  4. Fai clic sul pulsante Applica.

Per qualche ragione, tutte le mie lezioni avevano poi le C blu.

Qualcuno con una migliore comprensione di come IntelliJ e / o IDE potrebbero essere in grado di spiegare il fenomeno, ma tutto quello che so è che ora può vedere tutte le classi e, soprattutto, quella principale, ed eseguire.


Questo ha funzionato solo per me dopo aver chiuso Intellij, rimosso la cartella .idea, quindi riaperto Intellij e seguendo i passaggi precedenti.
Shell_Leko,

14

Creare esplicitamente una outcartella e quindi impostare il percorso di output suC:\Users\USERNAME\IdeaProjects\PROJECTNAME\out

COME QUESTO

sembrava funzionare per me solo quando mi outaspettavo che IntelliJ realizzasse la cartella.


Prova anche ad avere IntelliJ per creare una nuova configurazione di esecuzione:

Trova quello precedente facendo clic

! [Modifica configurazioni

quindi rimuoverlo

inserisci qui la descrizione dell'immagine

e va bene.

Ora (PASSO IMPORTANTE) apri la classe contenente il tuo metodo principale. Questo è probabilmente il modo più semplice facendo clic sul nome della classe nel riquadro di progetto sul lato sinistro.

Dai a Alt+ Shift+ F10e dovresti ottenere a

QUESTO

Ora colpisci Enter!!

Tadah ?? (Ha funzionato?)


La configurazione di esecuzione funziona, specialmente se hai spostato la main()funzione da class Mainun'altra classe. In tal caso, modifica la configurazione di esecuzione come mostrato sopra e modifica il valore di "Classe principale" sul nome della tua classe (completo).
Forumulator

Ho solo l'opzione "Modifica configurazione", non funziona per me (
Ver Nick

Non ho potuto fare a meno di notare che hai percepito il nome del tuo progetto ed eseguito la configurazione, ma è ancora chiaramente visibile nella seconda schermata
Jacob Schneider

Jacob Schneider, che è. Non riesco a ricordare perché l'ho censurato, probabilmente per un'abbondanza mal riposta.
Brad Turek

14

Cache non valida e riavvia Intellij, ha funzionato per me. Vai a File come mostrato nell'immagine allegata


7

So che questo è stato chiesto qualche tempo fa, ma stavo solo inciampando su questo problema e ho pensato che le mie scoperte potrebbero aiutare gli altri. Come sottolineato, il messaggio di errore è fondamentalmente il risultato della cartella out. Questo perché, quando si tenta di eseguire il programma, compila prima il codice e posiziona il risultato compilato nella posizione di uscita, quindi tenta di caricare il codice compilato dalla posizione di uscita. Se il codice compilato non si trova nella posizione prevista, verrà visualizzato l'errore.

Il punto che desidero particolarmente condividere è che alcune volte il codice non viene compilato (compilato), anche se la configurazione di esecuzione specifica "Build" nella sezione "Prima del lancio" del pannello di configurazione.

Quando può succedere? Una situazione che può causare ciò è se si utilizzano i moduli e si elimina manualmente la directory di uscita del modulo. Ad esempio, se ho un modulo chiamato "foo", dovrebbe esserci una directory chiamata foo in out / production. Se lo elimini manualmente, il sistema di generazione potrebbe non sapere che deve essere ricostruito.

Ancora peggio, se si seleziona Crea | Crea modulo 'pippo', potrebbe ancora non ricostruire il modulo. In tal caso, è necessario selezionare un file nel modulo, ad esempio "bar.java", quindi selezionare Build | Ricompila 'bar.java'. Ora la directory out out / production / foo dovrebbe essere ripristinata.

Dato che IntelliJ in genere è a conoscenza di eventuali cambiamenti in corso, questo mi ha sorpreso e mi ci è voluto un po 'di tempo per capire, quindi ho pensato di condividere.


6

Controlla il tuo modulo di classe : ho riscontrato questo problema con intellij: ho un progetto multi-modulo maven, il problema è che sto eseguendo una classe che non esiste il modulo all'interno della configurazione, quindi il mio problema viene risolto impostando il modulo giusto ( "modifica configurazione" -> "usa classe di modulo")

possa questo aiutarti


Ha funzionato anche per me. Grazie! Probabilmente qualcosa era andato storto durante l'installazione di un aggiornamento di IntelliJ o del plugin Scala. Successivamente si ottiene questo strano problema. Molto fastidioso e richiede tempo. Speriamo che JetBrains trovi una soluzione.
André van Delft,

6

Ho dovuto contrassegnare la cartella "src" come "Sorgenti". Dopo aver riavviato IntelliJ e ricostruito il progetto, ho potuto eseguire il progetto senza ulteriori problemi (vedi screenshot ). Modifica: puoi accedere alla scheda "Struttura del progetto" tramite File-> Struttura del progetto o premendo Ctrl + Maiusc + Alt + S.


1
Se (come me) non hai una scheda "fonti", allora dovresti aggiungere un nuovo modulo (fai clic sul verde +) e selezionare la cartella principale come fonte. Nulla verrà sovrascritto e la cartella src diventerà blu.
john ktejik,

5

Apri la scheda Moduli (premi Ctrl + Maiusc + Alt + S). Avevo due moduli in un unico progetto. Ho risolto il problema dopo aver rimosso il secondo modulo ridondante (vedi screenshot).inserisci qui la descrizione dell'immagine


4

Ho riscontrato tali problemi quando la classe si trova nella cartella predefinita, ovvero quando la classe non dichiara un pacchetto.

Quindi suppongo che usando una dichiarazione del pacchetto (es. package org.me.mypackage;) In cima alla classe dovrebbe risolverlo.


posso replicare quella riga di codice ?? .. come posso modificarla nel caso dovessi ??
Mailman confuso,

Basta usare il proprio nome del pacchetto, in questo modo:package org.confused.mailman;
Hakan Serce,

Bene, l'istruzione del pacchetto deve corrispondere al punto in cui l'IDE ha inserito il file. Se l'IDE non ha inserito il file in sourceBase / l' org/confused/mailmanaggiunta di quella riga di pacchetto non è di aiuto.
QuantumMechanic,

Immagino che IDE guiderà questo problema e lo risolverà automaticamente, se viene selezionata la correzione consigliata.
Hakan Serce,

non aiuta: / .. l'IDE non sembra infastidito da nessuna delle modifiche che faccio .. getta l'errore sopra e si siede e si rilassa
Mailman confuso

3

File> Struttura del progetto> Moduli> Contrassegna la cartella "src" come origini. Questo dovrebbe risolvere il problema. Controlla anche che sia selezionata la lingua più recente in modo da non dover cambiare codice o apportare modifiche alla configurazione. inserisci qui la descrizione dell'immagine


2

Nel mio caso il problema sembrava essere correlato all'aggiornamento di IntelliJ. Quando l'ho fatto, ho sovrascritto i file del vecchio IntelliJ con i file della nuova IntelliJ (dalla community 2017 alla community 2018). Dopo di che tutti i miei progetti sono stati interrotti. Ho provato di tutto in questo thread e nessuno di loro ha funzionato. Ho provato ad aggiornare Gradle all'ultima versione (da 4 a 4.8) e non ha funzionato. L'unica cosa che ha funzionato per me è stata eliminare l'intera cartella IntelliJ e reinstallarla. Tutti i miei progetti hanno funzionato dopo.


Sembra proprio questo. Uso Intellij portatile quindi ho rinominato la cartella principale come da idea\binessere idea_old\bine ho rinominato la cartella delle impostazioni in %user%\usernamecui deve .IntelliJIdea2018.2essere .IntelliJIdea2018.2_oldnuovamente estratto il file zip Intellij per iniziare a usarlo come nuova nuova versione portatile (Questa è la versione 2018.2.1) con Spring L'app di avvio di più moduli separati (non collegati in pom.xml monoparentale) ognuno è l'app di avvio a molla con i suoi pom.xml e voilà !!! Tutto funziona, cartella di destinazione creata, compilazione prima di eseguire il dashboard di avvio a molla.
Anddo,

2

Contrassegna la directory come directory di origine. Aperto tramite Ctrl + Maiusc + Alt + S

inserisci qui la descrizione dell'immagine


1

Per me - ho provato alcune delle opzioni sopra, non ha funzionato. Quindi ho appena rinominato la mia classe di applicazione e questo probabilmente ha costretto intelliJ a creare un nuovo vaso e il messaggio di errore ha iniziato a cambiare. Poi l'ho rinominato e ha funzionato.


1

Ho provato tutti gli hack suggeriti qui - inutilmente. Alla fine ho semplicemente creato una nuova applicazione Maven e copiato manualmente in esso - uno per uno - i file e le risorse pom.xml e java. Ora funziona tutto. Sono nuovo di IntelliJ e totalmente impressionato ma quanto sia facile portarlo in uno stato instabile.


È necessario chiudere intellij, eliminare la cartella .idea (probabilmente un file nascosto); quindi riapri la cartella in intellij - reinizializzerà il progetto intelli in base alla configurazione maven / grade.
Jeremy,

1

inserisci qui la descrizione dell'immagine

modules.xml con contenuti errati, non so cosa sia importante con la mia IDEA.


1

Ho ereditato un sacco di file .JAVA da altrove e non sono riuscito a capire come farli funzionare in qualsiasi IDE. Alla fine ho dovuto andare alla riga di comando dove era il file Main.JAVA ed eseguire javac Main.java. Questo ha creato un mucchio di file .CLASS. Gli IDE sono stati quindi in grado di capire cosa fare.


1

Ho riscontrato questo errore durante l'utilizzo di Scala / SBT . IntelliJ non è riuscito a trovare la classe principale, anche se tutto è stato impostato correttamente. La mia soluzione: elimina la <user>/.sbt/<version>/plugins/targetcartella, quindi riavvia IntelliJ.


1

Sto usando IntelliJ con Spring e la mia classe principale è racchiusa in un JAR. Ho dovuto contrassegnare "Includi dipendenze con ambito" Fornito "nella finestra di dialogo di configurazione Esegui / Debug


1

Siamo nella struttura dei file / progetti. La risposta potrebbe essere:

La cartella indicata come "radice del contenuto" necessita di una cartella figlio in cui si trova il codice. Inoltre trova il pulsante che contrassegna il codice come escluso e non. Da non confondere con la casella di spunta che dichiara escluso senza dire in quale fase e cosa ** È il compilatore esclude o il runtime esclude? Sei destinato a testare e molto. Quindi niente quella casella ma icone e colori.

Come idea, abbiamo bisogno di capire come inizialmente si pensava funzionasse. Non riuscirono mai a funzionare al primo posto e iniziarono ad aggiungere cose in stile di codacolazione prematura. Sono passati tanti anni e non puoi aspettarti alcun miglioramento. Ma come cura possiamo escogitare un modo per farlo sempre bene.


1

Un'altra cosa che puoi controllare qui è il comando effettivo che viene passato alla JVM e assicurarti che appaia OK. Scorri fino alla parte superiore della console di esecuzione, dovrebbe essere la prima riga.

Gli spazi nel campo Esegui opzioni di configurazione della macchina virtuale determineranno la malformazione del comando di avvio dell'app e possono generare questo messaggio di errore

-DsomeArgument="arg with space must be quoted"

Grazie ! Questo ha funzionato per me !!
Jcoder il

0

Elaborazione della soluzione di Brad Turek ... Uno dei modelli di progetto Java IntelliJ predefiniti prevede un file chiamato Main che definisce il punto di ingresso del metodo class e main () . Se il metodo è contenuto in un altro file (e classe), modificare la configurazione Esegui :

Esegui finestra di configurazione

  1. Con il progetto aperto in IntelliJ, utilizzare il menu Esegui: Modifica configurazioni ... per aprire la finestra di configurazione della build.
  2. Se la voce per la classe Main non elenca il nome del tuo file contenente la classe che espone il metodo di immissione main () , inserisci il nome file corretto. (La configurazione nell'immagine è errata, motivo per cui è rossa nel pannello di configurazione.)
  3. Il mio metodo di immissione principale () è nella classe (e nel file) ScrabbleTest . Quindi cambiando la classe principale: a ScrabbleTest corregge l'errore di runtime.

Come altri hanno notato, è necessario ReBuild utilizzando la nuova configurazione. Sto usando un pacchetto, ma questo non sembra fare la differenza IME. Spero che questo ti aiuti.


0

Nel mio caso in build.gradle del modulo, l'assegnazione mainClassName deve indicare il nome completo della classe, ad es. come specificato come nome del pacchetto nel file di codice sorgente della classe principale.


0

Ricostruisci semplicemente il progetto (CTRL + F9) e ricontrolla (Modifica configurazioni) se hai impostato correttamente la classe principale e il modulo (se presente)


0

La soluzione semplice è andare alla cartella di backup nella riga di comando, dove si trova la cartella principale del progetto. Dovresti avere SBT installato sul tuo computer.

Se hai installato sbt, esegui il comando "pacchetto sbt", questo ricompilerà il progetto in caso di successo, torna a IntelliJ funzionerà.


Benvenuti in SO! Quando rispondi a una risposta, vigila se è corretta, prova a spiegarla un po '.
David García Bodego,

0

Nel mio caso, avevo configurato argomenti (relativamente) lunghi di VM. La conversione di questi argomenti (quando possibile) in variabili di ambiente ha risolto il problema per me


Non puoi avere spazi nelle opzioni della VM a meno che tu non inserisca "virgolette" intorno agli arg
Sì, l'

0

Nel mio caso, l'applicazione funziona bene quando il codice inizialmente era nella directory / src nel progetto. Successivamente ho aggiunto la directory / main / java dopo il / src, quindi si è verificato l'errore "Impossibile trovare o caricare la classe principale ...". In quel momento non è stato possibile aggiungere /src/main/java/YourMain.java alla configurazione della corsa. Quello che ho fatto è stato rimuovere la configurazione di esecuzione, quindi fare clic con il pulsante destro del mouse sul progetto-> Apri le impostazioni del modulo (o F4 dopo aver fatto clic sul pannello Progetto) -> Impostazioni del progetto-> Moduli eliminare (x) la vecchia radice del contenuto e + Aggiungi radice del contenuto, scegli / src / main / java. Ricostruisci il progetto e viene eseguito.


0

Probabilmente avresti specificato un pacchetto sbagliato e la gerarchia dei pacchetti non sarebbe corretta. Guarda sotto

inserisci qui la descrizione dell'immagine

L'ide avrebbe evidenziato la strada sbagliata in quel caso.


0

Nel mio caso, si tratta di un progetto di Maven, ho reimportato Maven (tasto destro sul pom.xml file e fare clic Reimporta ) che è ha funzionato subito.

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.