Error “No se pudo encontrar la clase principal” al ejecutar el archivo jar exportado por Eclipse

Tengo un proyecto de Java que funciona perfectamente bien cuando se ejecuta desde Eclipse. Cuando trato de exportarlo a un "JAR file" o "Runnable JAR file" .jar, pero cuando hago doble clic en él para intentar ejecutar el progtwig, me da un error que dice:

 "Could not find the main class: package.MainClassName. Program will exit." 

Como mencioné, traté de exportar a ambas opciones de JAR, especifiqué la clase correcta en la que se encuentra el método principal, y cuando miro a través de los archivos reales en el archivo .jar todo parece estar en orden: el manifiesto se parece más o menos a :

 Manifest-Version: 1.0 Main-Class: package.MainClassName (blank line) 

y está en la carpeta META-INF . Hay una carpeta con mi nombre de paquete, que contiene todos los archivos .class, incluida la clase que contiene el método principal. Algunos archivos de imagen y texto que uso también aparecen en el archivo jar.

El progtwig real no es demasiado complicado: es un simple juego de “serpiente” que usa Swing (más el código funciona cuando se ejecuta desde dentro de Eclipse).

¿Alguna idea de qué está causando este error y cómo puedo solucionarlo? Avíseme si hay alguna otra información que debería proporcionar.

Verifique que pueda iniciar su aplicación de esa manera:

 java -cp myjarfile.jar snake.Controller 

Acabo de leer cuando hago doble clic en él ; esto parece un problema de configuración con su sistema operativo. ¿Hace doble clic en el archivo en una ventana del explorador de Windows? Intenta ejecutarlo desde una consola / terminal con el comando

 java -jar myjarfile.jar 

Otras lecturas

  • Ejecutar archivo JAR en Windows

El manifiesto debe terminar con una nueva línea. Verifique su archivo, una nueva línea faltante causará problemas.

Ok, entonces finalmente lo hice funcionar. Si utilizo el JRE 6 en lugar de 7 todo funciona bien. No tengo idea por qué, pero funciona.

¿Ha intentado crear un archivo .jar de forma manual en lugar de usar Eclipse? Pruebe los siguientes pasos, con suerte eso podría ayudar:

Teniendo en cuenta que su estructura de directorios se ve así:

  TicTacToe(Your Project Name I mean) | | | src bin manifest.txt | | icons tictactoe 

Ahora supongamos que mi clase principal es BeginGame dentro del paquete tictactoe , así que escribiré dentro de mi archivo manifest.txt esta cosa:

 Main-Class: tictactoe.BeginGame 

Recuerde el espacio entre dos puntos : y el nombre del paquete, es decir, tictactoe , e inmediatamente después de BeginGame presione Entrar y guarde el archivo.

Ahora, en el símbolo del sistema, vaya a la ubicación de la carpeta bin, estoy describiendo mi lado de la siguiente manera:

 C:\Mine\Eclipse\TicTacToe\bin>jar -cfm ..\tictactoe.jar ..\manifest.txt tictactoe icons 
  • Aquí el primer argumento es decir ..\tictactoe.jar se usa para decir que crea tictactoe.jar un nivel arriba, es decir, dentro de la TicTacToe Folder .
  • El segundo argumento ..\manifest.txt significa que el archivo manifest.txt se encuentra un nivel arriba, es decir, dentro de la TicTacToe Folder .
  • Tercer y cuarto argumento significa tictactoe e icons , que añaden ambas carpetas al archivo .jar , ya que se ubican dentro de la carpeta bin para que se usen tal cual. Ahora presiona Enter.

Ahora intente ejecutar su archivo .jar creado dentro de la Project Folder del Project Folder (Carpeta TicTacToe, en mi caso).

Espero que esto funcione.

Ejecútelo así en la línea de comando:

 java -jar /path/to/your/jar/jarFile.jar 

¿Ha renombrado su proyecto / clase principal (por ejemplo, mediante refactorización)? En caso afirmativo, su configuración de inicio puede configurarse incorrectamente (por ejemplo, refiriéndose a la clase o configuración principal anterior). Aunque el nombre del proyecto aparece en el cuadro de diálogo “exportar jar ejecutable”, una inspección más detallada podría revelar un nombre de clase principal no coincidente.

Vaya a ‘Propiedades-> Ejecutar / Configuración de depuración’ de su proyecto y asegúrese de que su Configuración de inicio (la misma que se utiliza para exportar el archivo ejecutable) esté configurada con el nombre correcto del proyecto Y su clase principal esté configurada como name.space.of.your.project/YouMainClass .

Haga clic derecho en el proyecto. Ir a propiedades. Haga clic en Ejecutar / Depurar Configuraciones. Ahora borre la configuración de ejecución de su clase principal que está tratando de ejecutar. Ahora, cuando aciertes a ejecutar nuevamente, las cosas funcionarían bien.

Para netbeans, el usuario que tiene este problema es simplemente:

1. Vaya a su proyecto y haga clic derecho y seleccione Propiedades

2. Haga clic en Ejecutar y también haga clic en el navegador.

3.Seleccione los marcos que quiere que aparezcan primero.

Me encontré con los mismos problemas el otro día y me llevó días hacerlo funcionar. El mensaje de error fue “No se pudo encontrar la clase principal”, pero puedo ejecutar el archivo ejecutable exportado desde Eclipse en otras máquinas con Windows sin ningún problema.

La solución fue instalar versiones x64 y x86 de la misma versión de JRE. La variable de entorno de ruta se apuntó a la versión x64. No tengo idea de por qué, pero funcionó para mí.