No heu pogut trobar ni carregar Java de classe principal? A continuació s’explica com solucionar-ho.

No heu pogut trobar ni carregar Java de classe principal? A continuació s’explica com solucionar-ho.

Si continueu obtenint l'error de classe principal que no s'ha trobat al vostre projecte Java sense cap motiu aparent, no us preocupeu, no esteu sols.





Com un dels errors més imprevisibles i espontanis, gràcies a la tendència de JVM (màquina virtual de Java) a adherir-se a una ruta de classe predeterminada, el problema de la 'classe principal no trobada' és una cosa que persegueix als aficionats i als professionals per igual.





Però aquest tema és en realitat menys intimidatori del que sembla ser. Seguiu llegint per esbrinar com es pot desfer d’aquest error d’una vegada per totes.





Per què no es va trobar la classe principal?

Abans d’intentar entendre com i per què JVM no va poder trobar la classe principal, hem d’entendre el concepte de Classpath a Java.

Què és Classpath?

Classpath és el camí d'accés al fitxer que l'entorn d'execució de Java cerca classes i altres fitxers de recursos. Es pot configurar mitjançant el fitxer -viatge de classe opció en executar un programa o configurant el sistema CLASSPATH variable d'entorn.



Com el seu nom indica, és simplement un camí de fitxers on el fitxer .classe es poden trobar en un directori o paquet JDK.

Quan la JVM no pot localitzar la classe principal, sovint és perquè busca la corresponent .classe fitxers a la ruta de classe incorrecta. Per descomptat, la manera de corregir aquest problema consisteix a especificar manualment la classpath mitjançant paquets o bé especificant la classpath.





En aquest moment, si voleu actualitzar la memòria de les classes de Java, consulteu la nostra guia creant classes a Java .

aplicació que us permet utilitzar el wifi escolar

Ús de paquets

Creem una classe anomenada Prova . Col·loqueu-lo en un paquet anomenat Paquet de prova . Els paquets s’utilitzen a Java per agrupar classes similars o proporcionar un espai de noms únic per a les classes.





En aquest exemple senzill, l’ús d’un paquet us ajudarà a visualitzar el funcionament de la ruta de classe de Java. A la vostra aplicació de gestor de fitxers, un paquet es representa com una carpeta independent.

package testPackage;
public class Test {
public static void main(String args[]) {
System.out.println('File successfully found!');
}
}

Ara, obriu un terminal nou i assegureu-vos que el directori de treball sigui el mateix que el que conté la carpeta de paquets. Podeu canviar el directori de treball utilitzant el fitxer cd de comandament en qualsevol sistema operatiu.

Compila Test.java executant l'ordre següent:

package testPackage;
javac testPackage/Test.java

Això desarà el fitxer binari compilat (el fitxer .class) a TestPackage.

Per executar la classe compilada, heu d’escriure el nom de classe completament qualificat a la línia d’ordres. El nom completament qualificat d’una classe Java fa referència al seu nom amb el seu nom de paquet. En aquest cas, hauria de ser semblant a això:

java testPackage.Test

Aquesta forma de cridar fitxers de classe també garanteix que podeu trucar a executables de diferents paquets des del mateix directori de treball. Tot el que heu de fer és modificar el nom de la classe completament qualificat.

En implementacions més avançades, us recomanem que creeu subcarpetes separades per a les vostres classes i fitxers font per gestionar millor els fitxers del paquet.

Especificació manual de Classpath

La forma recomanada de gestionar els fitxers java és crear directoris separats per als fitxers i les classes d'origen. Si esteu treballant en un projecte, és probable que ja ho feu.

Convencionalment, el directori amb fitxers font s'etiqueta com a src i el que té fitxers .class s'etiqueta com a classes. Aquesta també és una manera de garantir que la probabilitat que JVM no trobi la classe principal es redueixi significativament, a causa del directori estructurat adequadament.

Si fem servir aquest mètode, és l’aspecte de l’estructura de directoris abans de compilar:

jocs mentals per jugar amb un amic
|---myFolder
| |---src
| |---testPackage
| |---Test.java
|
| |---classes

Cada sagnat de la il·lustració anterior correspon a un nivell de jerarquia de fitxers que hauria de seguir el vostre projecte.

Per compilar-ho, assegureu-vos que el directori de treball és la meva carpeta. Ara, escriviu l'ordre següent:

javac -d classes src/testPackage/Test.java

El .classe s'hauria de desar a l'executable myFolder / classes / testPackage . En conseqüència, l'estructura de directoris de fitxers té un aspecte semblant a aquest:

|---myFolder
| |---src
| |---testPackage
| |---Test.java
|
| |---classes
| |---testPackage
| |---Test.class

Per executar el fitxer .classe , executeu l'ordre Java amb el nom de classe completament qualificat i especifiqueu la ruta de classe local. Cada ruta es declara relativa al directori de treball, que en aquest cas és la meva carpeta.

java -classpath classes testPackage

L'execució d'aquesta ordre us proporcionarà la sortida desitjada. Però, per què és necessària tanta reorganització per resoldre un simple error?

La importància d’organitzar fitxers a Java

La mateixa raó per la qual es genera 'No s'ha pogut trobar ni carregar la classe principal' és perquè JVM no ha pogut trobar on .classe s'estaven emmagatzemant fitxers.

La forma més senzilla de resoldre aquest error és controlar on s’emmagatzemen els fitxers .class i dir explícitament a JVM que hi busqui. Això és possible organitzant els fitxers font i executables per separat i controlant tot des d’un directori de treball.

Quan comenceu a afegir construccions com ara herència al vostre projecte, la complexitat del sistema de fitxers augmentarà la varietat. En aquests projectes o fins i tot en aquells on es requereix l’ús de fitxers JAR o biblioteques personalitzades, la simple pràctica de segregar i gestionar fitxers us pot estalviar innombrables hores de resolució de problemes i depuració.

Per obtenir més informació sobre com funciona Classpath a Java i les nombroses coses que podeu controlar a l’hora d’executar el vostre codi, també podeu fer una ullada a Oracle referència detallada i fàcil d'utilitzar .

Compartir Compartir Tweet Correu electrònic Els 10 millors projectes per a principiants per a nous programadors

Voleu aprendre a programar però no sabeu per on començar? Aquests projectes i tutorials de programació per a principiants us iniciaran.

podeu crear el vostre propi filtre Snapchat
Llegiu a continuació Temes relacionats
  • Programació
  • Java
Sobre l'autor Yash Chellani(10 articles publicats)

Yash és un aspirant a estudiant d'informàtica a qui li encanta construir coses i escriure sobre totes les coses tecnològiques. Durant el seu temps lliure, li agrada jugar a l’esquaix, llegir una còpia de l’últim Murakami i caçar dracs a Skyrim.

Més de Yash Chellani

Subscriu-te al nostre butlletí

Uniu-vos al nostre butlletí per obtenir consells tècnics, ressenyes, llibres electrònics gratuïts i ofertes exclusives.

Feu clic aquí per subscriure-us