Solució: no s'ha pogut trobar ni carregar la classe principal



Proveu El Nostre Instrument Per Eliminar Problemes

L’error ‘ No s'ha pogut trobar ni carregar la classe principal ’Es produeix quan s’utilitza una ordre java a l’indicador d’ordres per iniciar un programa Java especificant el nom de la classe al terminal. El motiu pel qual passa això es deu principalment a un error de programació de l’usuari en declarar la classe.



No s

No s'ha pogut trobar ni carregar la classe principal: línia d'ordres de Java



Com s'ha esmentat anteriorment, aquest error no està relacionat principalment amb el sistema i l'usuari comet un error en diversos escenaris, tal com es mostra a continuació. Abans de continuar endavant, suposem que teniu un coneixement bàsic del llenguatge de programació Java i del seu funcionament.



Què causa l'error 'No s'ha pogut trobar o carregar la classe principal' a Java?

El missatge 'No s'ha pogut trobar ni carregar la classe principal' significa que el primer pas del motor Java que ha obtingut la classe per a l'execució ha fallat. El ordre java no va poder localitzar la classe al directori correcte.

En alguns casos, heu d'afegir el fitxer camí correcte del fitxer i apunteu el terminal Java cap a la ubicació correcta. Com que esteu executant l'ordre des del terminal de línia d'ordres, l'ordinador no sap on es troba ni on es troba la classe. A les IDE orientades, aquest no és el problema, ja que l’IDE ​​manté un punter apuntant cap al directori de treball actual.

Què és la sintaxi 'java'?

Abans de començar a resoldre els problemes per què el terminal ens torna un error en intentar executar-lo, primer hem de mirar la sintaxi de l'ordre. Si no utilitzeu la sintaxi correcta, afrontareu inevitablement aquest error.



La sintaxi normal de l'ordre és una cosa així:

java [...] [...]

Aquí hi ha una opció de línia d’ordres, és un nom de classe Java completament qualificat i és un argument de línia d’ordres que es passa a la vostra aplicació quan es compila tot el paquet.

Un exemple d'una ordre vàlida és:

java -Xmx100m com.acme.example.ListAppuals fletxes kevin bart

L'ordre anterior farà que l'ordre java executi les següents operacions:

  • Es buscarà una versió compilada de la classe ‘ com.acme.example.ListAppuals '.
  • Després de buscar, carregarà la classe.
  • A continuació, quan es carrega la classe, es buscarà un mètode 'principal' amb una signatura vàlida, modificadors i tipus de retorn. Una mostra de classe principal seria una cosa així com:
public static void main (cadena [])
  • El mètode es cridarà amb els arguments 'kevin', 'fletxes' i 'bart' com a cadena [].

Com es corregeix 'No s'ha pogut trobar ni carregar la classe principal'

Solució 1: comprovació de l'argument del nom de la classe

L'error més comú que cometen els usuaris és que proporcionen un nom de classe incorrecte com a argument (o un nom de classe correcte és una forma incorrecta). Com que declarem paràmetres a la línia d'ordres, és molt probable que passeu l'argument del nom de classe en un format incorrecte. Aquí enumerarem tots els possibles escenaris en què podeu cometre un error.

  • Escriure un nom de classe simple . Si declareu la classe en un paquet com ara ‘com.acme.example’, heu d’utilitzar el fitxer nom de classe complet inclòs el paquet a l'ordre Java.
java com.acme.example.ListAppuals

en lloc de

java ListAppuals
  • Hauries declarar un nom de classe en lloc de declarar un nom de fitxer o una ruta. Java no obté la classe si hi declareu un camí / nom de fitxer. Incorrecte les entrades inclouen el següent:
java ListAppuals.class java com / acme / example / ListAppuals.class
  • Carcassa s’ha de tenir en compte. Les ordres Java distingeixen entre majúscules i minúscules i si cometeu un error de fins i tot una lletra, no podreu carregar la classe principal. Un exemple de errors incorrectes són:
java com.acme.example.listappuals
  • Vostè no hauria declari a nom del fitxer font . Com s'ha esmentat abans, només heu de declarar la classe amb el format complet de nom de classe correcte. Un exemple d’error és:
java ListAppuals.java
  • Aquest error també es produirà si feu un fitxer error d'escriptura o bé oblideu d’escriure completament el nom de la classe .

Si heu comès algun error descuidat en declarar el nom de la classe, assegureu-vos de solucionar-lo i proveu d'iniciar el programa.

Solució 2: comprovació de classpath

Si heu declarat correctament el nom de classe però encara es mostra l'error, és probable que l'ordre java no trobi el nom de classe especificat al camí d'accés. Classpath és un camí d'accés on Java Runtime cerca fitxers de recursos i de classes. Podeu configurar fàcilment la ruta de classe utilitzant dues ordres diferents, tal com es mostra a continuació:

C:> sdkTool -classpath classpath1; classpath2 ... C:> set CLASSPATH = classpath1; classpath2 ...

Per obtenir més informació sobre la ruta de classe, consulteu els documents següents.

Documentació d’ordres Java

Configuració de classpath

Solució 3: comprovació del directori

Quan declareu un directori com a ruta de classe, sempre correspondrà a l'arrel de l'espai de noms. Per exemple, si '/ usr / local / acme / classes' es troba a la ruta de la classe, Java cercarà una classe 'com.acme.example.Appuals'. Es buscarà una classe amb la ruta següent:

/usr/local/acme/classes/com/acme/example/Appuals.class

Així, en essència, si col·loqueu la següent adreça a la ruta de la classe, Java no podrà trobar la classe:

/ usr / local / acme / classes / com / acme / exemple

També heu de comprovar el vostre subdirectori i veure si coincideix amb el FQN. Si les vostres classes FQN són 'com.acme.example.Appuals', llavors Java cercarà una 'Appuals.class' al directori 'com / acme / example'.

Per posar-vos un exemple, suposem el següent escenari:

  • La classe que voleu executar és: com.acme.example.Appuals
  • El camí complet del fitxer és: /usr/local/acme/classes/com/acme/example/Appuals.class
  • El directori de treball actual is: / usr / local / acme / classes / com / acme / example /

Aleshores es mantindrien els escenaris següents:

# incorrecte, es necessita FQN java Appuals # incorrecte, no hi ha cap carpeta `com / acme / example` al directori de treball actual java com.acme.example.Appuals # incorrecte, similar a l'escenari anterior java -classpath. com.acme.example.Appuals # OK; s'estableix una ruta de classe relativa java -classpath ../../ .. com.acme.example.Appuals # OK; es defineix una ruta de classe absoluta java -classpath / usr / local / acme / classes com.acme.example.Appuals

Nota: El camí d'accés a la classe també ha d'incloure totes les altres classes (que no són del sistema) que necessiten les vostres aplicacions.

Solució 4: comprovació del paquet de la classe

Si totes les solucions anteriors es compleixen en el vostre cas, heu d'assegurar-vos que el vostre codi font es troba a la carpeta correcta. A més, heu declarat correctament el fitxer paquet . Si executeu el codi amb un IDE, probablement us informarà sobre el problema. No obstant això, en el nostre cas, ja que l'executem a l'indicador d'ordres, l'error passarà desapercebut i obtindreu l'error de classe en discussió.

4 minuts de lectura