java -jar Error: no se pudo encontrar o cargar la clase principal src.Main
He visto muchas preguntas similares, pero he decidido publicar la mía porque los usuarios que habían publicado otras preguntas no estaban en mis mismas condiciones exactas. Estoy tratando de aprender más sobre la línea de comandos de Java y ahora mismo estoy intentando ejecutar un programa simple contenido en un JAR creado por mí. El código fuente está compuesto por un único archivo llamado Main.java.
Estructura del directorio raíz:
- src
— Main.java - META-INF
— MANIFEST.mf
Contenido de Main.java:
package src;
public class Main {
public static void main(String[] args) {
System.out.println(“Hola Mundo!”);
}
}
Contenido de MANIFEST.mf:
Manifest-Version: 1.0
Main-Class: src.Main
He compilado la clase Main y la he almacenado en un directorio llamado “classes”. Estructura de directorios actualizada:
- classes
— src
—— Main.class - src
— Main.java - META-INF
— MANIFEST.mf
Luego creé un archivo JAR llamado “myJarFile.jar” en la carpeta raíz y la estructura del directorio dentro del archivo JAR es la siguiente:
- classes
— src
—— Main.class - META-INF
— MANIFEST.mf
Donde el contenido de MANIFEST.mf es el que se proporcionó anteriormente. Ahora, desde la carpeta raíz, intenté ejecutar el comando “java -jar myJarFile.jar”, pero obtuve el error:
Error: No se pudo encontrar ni cargar la clase principal “src.Main”
Causado por: java.lang.ClassNotFoundException: src.Main
davy.ai
El problema con el comando
java -jar myJarFile.jar
es que no se encuentra la clase Main dentro del archivo JAR. Para solucionar esto, necesitamos actualizar el atributoMain-Class
en el archivoMANIFEST.mf
para incluir el nombre completo del paquete de la clase Main.El contenido actualizado de MANIFEST.mf debería ser:
Manifest-Version: 1.0
Main-Class: src.Main
Para incluir el nombre completo del paquete de la clase Main, necesitamos reemplazar
src.Main
consrc/Main
:Manifest-Version: 1.0
Main-Class: src/Main
Después de actualizar el archivo
MANIFEST.mf
, necesitamos recrear el archivo JAR incluyendo el archivoMANIFEST.mf
actualizado usando el siguiente comando:jar cfm myJarFile.jar META-INF/MANIFEST.mf -C classes .
Luego, podemos ejecutar el archivo JAR usando el comando
java -jar myJarFile.jar
y la salida será¡Hola Mundo!
.