És molt comú trobar errors i excepcions en el llenguatge de programació Java. Però alguns dels errors més populars i comuns sovint s'enfronten als programadors que són nous en programació. Entre aquests errors, no s'ha pogut trobar ni carregar la classe principal a Java, és un d'ells que es produeix habitualment. L'error indica que el comanda java fracassat per trobar o carregar la classe principal . Es produeix quan intentem executar un programa. Quan es produeix l'error, la JVM mostra el missatge d'error següent a la consola:
Error: Could not find or load main class ClassName
L'error es genera principalment quan especifiquem incorrectament el nom de la classe en temps d'execució del programa.
Motius per produir error
L'error es genera perquè el JVM no es pot carregar la classe principal o el nom del paquet. Hi ha altres motius que generen el mateix error, com ara:
- La classe s'ha declarat en el paquet incorrecte.
- Falten dependències al CLASSPATH.
- El camí del subdirectori no coincideix amb el nom complet.
- El directori incorrecte és al CLASSPATH.
- El CLASSPATH de l'aplicació està incorrectament especificat.
- També es produeix quan hem comès un error amb l'argument del nom de classe.
Solució a l'Error
Per evitar o resoldre l'error, hem d'especificar el nom absolut del paquet o el nom de la classe.
Sense paquet
La classe principal és una classe en la qual es defineix el mètode main(). Creem un programa que generi i mostri un error a la consola.
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); } }
Sortida:
Veiem que el programa anterior es compila i s'executa amb èxit. Generem l'error que no s'ha pogut trobar ni carregar la classe principal en el programa anterior. Per generar i mostrar l'error, tenim mal escrit el nom de la classe mentre escriviu java comandament java DemoClas .
També es produeix quan especifiquem el .classe extensió al final del nom de la classe.
java DemoClass.class
Per evitar l'error, no escriviu .classe extensió al final del nom de la classe mentre s'utilitza l' java comandament.
java DemoClass
L'error també es produeix quan no col·loquem la classe a la carpeta correcta. A la imatge següent, no estem dins demostració carpeta on es troba la classe. Significa el DemoClass.class el fitxer ha d'estar dins del directori C:demo .
Amb paquet
Al programa anterior, creem un paquet anomenat com.javatpoint . Vol dir, en compilar el següent programa Java, el fitxer .class es generarà dins del fitxer 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); } }
Sortida:
Recordeu que si la classe està dins d'un paquet, hem d'utilitzar el nom complet de la classe, inclòs el nom del paquet, a l'ordre java.