Vrlo je uobičajeno suočiti se s pogreškama i iznimkama u programskom jeziku Java. Ali s nekima od najpopularnijih i najčešćih pogrešaka često se susreću programeri koji su novi u programiranju. Među tim pogreškama, nije mogao pronaći ili učitati glavnu klasu u Javi, jedan je od njih koji se obično javlja. Greška ukazuje da je java naredba neuspjeh pronaći ili učitati glavnu klasu . Javlja se kada pokušamo pokrenuti program. Kada se pojavi pogreška, JVM prikazuje sljedeću poruku o pogrešci na konzoli:
Error: Could not find or load main class ClassName
Greška se uglavnom generira kada netočno navedemo naziv klase za vrijeme izvođenja programa.
Razlozi za pojavu pogreške
Pogreška se stvara jer JVM ne uspijeva učitati naziv glavne klase ili paketa. Postoje neki drugi razlozi koji generiraju istu pogrešku, kako slijedi:
- Klasa je deklarirana u pogrešnom paketu.
- Ovisnosti nedostaju u CLASSPATH.
- Put poddirektorija ne odgovara potpuno kvalificiranom nazivu.
- Pogrešan direktorij je na CLASSPATH.
- CLASSPATH aplikacije je netočno naveden.
- Također se događa kada smo pogriješili s argumentom naziva klase.
Rješenje za grešku
Kako bismo izbjegli ili riješili pogrešku, moramo navesti apsolutni naziv paketa ili naziv klase.
Bez paketa
Glavna klasa je klasa u kojoj je definirana metoda main(). Kreirajmo program koji generira i prikazuje grešku na konzoli.
DemoClass.java
public class DemoClass { public static void main(String[] args) { System.out.print('Enter a string: '); //using console to input data from user String name = System.console().readLine(); System.out.println('You have entered: '+name); } }
Izlaz:
Vidimo da se gornji program uspješno kompilira i izvodi. Generirajmo grešku koja nije mogao pronaći ili učitati glavnu klasu u gore navedenom programu. Da bismo generirali i prikazali pogrešku, imamo pogrešno napisano naziv klase dok upisujete Java naredba java DemoClas .
Također se javlja kada specificiramo .razred proširenje na kraju naziva klase.
java DemoClass.class
Da biste izbjegli pogrešku, nemojte pisati .razred proširenje na kraju naziva klase dok koristite Java naredba.
java DemoClass
Pogreška se javlja i kada razred ne smjestimo u ispravnu mapu. Na sljedećoj slici nismo unutar demo folder u kojem se nalazi razred. To znači DemoClass.class datoteka mora biti unutar direktorija C:demo .
Sa paketom
U gornjem programu kreirajmo paket pod nazivom com.javatpoint . To znači da će se prilikom prevođenja sljedećeg Java programa .class datoteka generirati unutar C:democomjavatpointDemoClass.class .
DemoClass.java
package com.javatpoint; public class DemoClass { public static void main(String[] args) { System.out.print('Enter a string: '); //reading a string from the user String name = System.console().readLine(); System.out.println('You have entered: '+name); } }
Izlaz:
Zapamtite da ako je klasa unutar paketa, moramo koristiti puni naziv klase, uključujući naziv paketa, u java naredbi.