Solución: no se pudo encontrar o cargar la clase principal

El error ' No se pudo encontrar o cargar la clase principal ' se produce cuando se usa un comando java en el símbolo del sistema para iniciar un programa Java especificando el nombre de la clase en el terminal. La razón por la que esto sucede se debe principalmente al error de programación del usuario al declarar la clase.

No se pudo encontrar o cargar la clase principal: línea de comando Java

Como se mencionó anteriormente, este error no está relacionado principalmente con el sistema y el usuario comete un error en varios escenarios como se muestra a continuación. Antes de seguir adelante, suponemos que tiene un conocimiento básico del lenguaje de programación Java y cómo funciona.

¿Qué causa el error 'No se pudo encontrar o cargar la clase principal' en Java?

El mensaje 'No se pudo encontrar o cargar la clase principal' significa que el primer paso del motor Java que busca la clase para su ejecución ha fallado. El comando java no pudo ubicar la clase en el directorio correcto.

En algunos casos, debe agregar la ruta de archivo correcta y apuntar el terminal Java a la ubicación correcta. Como está ejecutando el comando desde el terminal de la línea de comando, la computadora no sabe dónde se encuentra la clase o dónde se encuentra. En los IDE dirigidos, este no es el problema, ya que el IDE mantiene un puntero apuntando hacia el directorio de trabajo actual.

¿Qué es la sintaxis 'java'?

Antes de comenzar a solucionar problemas de por qué el terminal nos devuelve un error al intentar ejecutar, primero tenemos que mirar la sintaxis del comando. Si no está utilizando la sintaxis correcta, inevitablemente enfrentará este error.

La sintaxis normal del comando es algo como esto:

 java [...] [...] 

Aquí hay una opción de línea de comando, es un nombre de clase Java totalmente calificado y es un argumento de línea de comando que se pasa a su aplicación cuando se compila todo el paquete.

Un ejemplo de un comando válido es:

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

El comando anterior hará que el comando java ejecute las siguientes operaciones:

  • Buscará una versión compilada de la clase ' com.acme.example.ListAppuals '.
  • Después de buscar, cargará la clase.
  • Luego, cuando se carga la clase, se buscará en la clase un método 'principal' con una firma válida, modificadores y tipo de retorno. Una clase principal de muestra sería algo así como:
 public static void main (Cadena []) 
  • El método se llamará con argumentos 'kevin', 'flechas' y 'bart' como cadena [].

Cómo arreglar 'No se pudo encontrar o cargar la clase principal'

Solución 1: comprobación del argumento del nombre de clase

El error más común que cometen los usuarios es que proporcionan un nombre de clase incorrecto como argumento (o un nombre de clase correcto es una forma incorrecta). Dado que estamos declarando parámetros en la línea de comando, es muy probable que pase el argumento del nombre de clase en una forma incorrecta. Aquí enumeraremos todos los escenarios posibles donde puede cometer un error.

  • Escribir un nombre de clase simple . Si declara la clase en un paquete como 'com.acme.example', debe usar el nombre de clase completo, incluido el paquete en el comando Java.
 java com.acme.example.ListAppuals 

en vez de

 java ListAppuals 
  • Debería declarar un nombre de clase en lugar de declarar un nombre de archivo o ruta. Java no busca la clase si declara un nombre de ruta / nombre de archivo para ella. Las entradas incorrectas incluyen lo siguiente:
 java ListAppuals.class java com / acme / example / ListAppuals.class 
  • La carcasa debe tenerse en cuenta. Los comandos de Java distinguen entre mayúsculas y minúsculas y si comete un error de una sola letra, no podrá cargar la clase principal. Un ejemplo de errores incorrectos son:
 java com.acme.example.listappuals 
  • No debe declarar un nombre de archivo fuente . Como se mencionó anteriormente, solo necesita declarar la clase en el formato de nombre de clase completo correcto. Ejemplo de error es:
 java ListAppuals.java 
  • Este error también ocurrirá si comete un error de mecanografía u olvida escribir el nombre de la clase por completo .

Si ha cometido errores descuidados al declarar el nombre de clase, asegúrese de corregirlo y luego intente iniciar el programa.

Solución 2: verificar classpath

Si ha declarado el nombre de clase correctamente pero aún se muestra el error, es probable que el comando java no haya encontrado el nombre de clase especificado en la ruta. Classpath es una ruta donde el tiempo de ejecución de Java busca archivos de recursos y clases. Puede configurar fácilmente el classpath usando dos comandos diferentes como se muestra a continuación:

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

Para obtener más información sobre el classpath, debe consultar los siguientes documentos.

Documentación de comandos Java

Establecer classpath

Solución 3: verificar el directorio

Cuando declara un directorio como classpath, siempre corresponderá a la raíz del espacio de nombres. Por ejemplo, si "/ usr / local / acme / classes" está en el classpath, entonces Java buscará una clase "com.acme.example.Appuals". Buscará una clase con el siguiente nombre de ruta:

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

Entonces, en esencia, si coloca la siguiente dirección en el classpath, Java no podrá encontrar la clase:

 / usr / local / acme / classes / com / acme / example 

También debe verificar su subdirectorio y ver si coincide con el FQN. Si sus clases FQN son "com.acme.example.Appuals", Java buscará una "Appuals.class" en el directorio "com / acme / example".

Para darle un ejemplo, supongamos el siguiente escenario:

  • La clase que desea ejecutar es: com.acme.example.Appuals
  • La ruta completa del archivo es: /usr/local/acme/classes/com/acme/example/Appuals.class
  • El directorio de trabajo actual es: / usr / local / acme / classes / com / acme / example /

Entonces se sostendrían los siguientes escenarios:

 # incorrecto, se necesita FQN Java Appuals # incorrecto, no hay una carpeta `com / acme / example` en el directorio de trabajo actual java com.acme.example.Appuals # incorrecto, similar al escenario anterior java -classpath. com.acme.example.Appuals # OK; se establece un classpath relativo java -classpath ../../ .. com.acme.example.Appuals # OK; se establece un classpath absoluto java -classpath / usr / local / acme / classes com.acme.example.Appuals 

Nota: El classpath también debe incluir todas las otras clases (que no son del sistema) que necesita su aplicación.

Solución 4: verificar el paquete de clase

Si todas las soluciones anteriores son ciertas en su caso, debe asegurarse de que su código fuente se encuentre en la carpeta correcta. Además, ha declarado correctamente el paquete . Si ejecuta su código con un IDE, probablemente le informará sobre el problema. Sin embargo, en nuestro caso, dado que lo estamos ejecutando en el símbolo del sistema, el error pasará desapercibido y se discutirá el error de clase.

Artículos De Interés