¿Por qué no ha podido cargar el atributo de manifiesto de clase principal desde un archivo JAR?


He creado un archivo JAR de esta manera jar cf jar-file input-files. Ahora, estoy tratando de ejecutarlo. Ejecutarlo no funciona (no se encuentra el comando jre):

jre -cp app.jar MainClass

Esto tampoco funciona:

java -jar main.jar

(No se pudo cargar el atributo manifest de la clase Main desde main.frasco).

También descubrí que

Para ejecutar una aplicación empaquetada como Archivo JAR (versión 1.2 requires requiere Encabezado del manifiesto de clase principal)

¿Qué es el "encabezado de manifiesto de clase principal"? ¿Cómo lo creo y ¿dónde lo pongo?

Author: HewwoCraziness, 2010-04-07

11 answers

No estoy seguro de creer sus síntomas:

  • Si el comando jre no se encuentra, entonces ejecutar {[4] } debería dar el mismo error
  • Simplemente agregando un archivo JAR al classpath no debería dar el error que estás viendo

Espero que veas este error si ejecutas:

java -jar app.jar

El encabezado de la clase Main debe estar en el manifiesto para el archivo JAR-se trata de metadatos sobre cosas como otras bibliotecas requeridas. Consulte la documentación de Sun para saber cómo para crear un manifiesto apropiado. Básicamente necesitas crear un archivo de texto que incluya una línea como esta:

Main-Class: MainClass

Luego ejecuta

jar cfm app.jar manifest.txt *.class
 62
Author: Jon Skeet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-10 17:24:10
  1. Establece el classpath y compila

    Javac -classpath "C:\Program Files\Java\jdk1.6.0_updateVersion\tools.jar " yourApp.java

  2. Crear manifiesto.txt

    Clase principal: yourApp nueva línea

  3. Crea yourApp.jar

    Jar cvf0m yourApp.manifiesto de tarro.txt yourApp.clase

  4. Ejecutar yourApp.jar

    Java-jar yourApp.jar

 35
Author: weirdFactory,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-23 09:50:48

Puedes ejecutar con:

java -cp .;app.jar package.MainClass

Funciona para mí si no hay manifiesto en el archivo JAR.

 9
Author: Dainius,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-06 09:37:46

Obtuve este error, y fue porque tenía los argumentos en el orden equivocado:

CORRECTO

java maui.main.Examples tagging -jar maui-1.0.jar 

INCORRECTO

java -jar maui-1.0.jar maui.main.Examples tagging 
 6
Author: Sridhar-Sarnobat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-24 01:03:43

La forma más fácil de asegurarse de que ha creado correctamente el archivo JAR ejecutable, con el archivo de manifiesto apropiado, es usar Eclipse para compilarlo por usted. En tu proyecto Eclipse, básicamente solo tienes que seleccionar Archivo / Exportar en el menú y seguir las instrucciones.

De esa manera, puede estar seguro de que su archivo JAR es correcto y sabrá buscar en otro lugar si todavía hay un problema. El proceso se describe en su totalidad en FAQ ¿Cómo puedo crear un archivo JAR ejecutable para un ¿programa SWT independiente?.

 1
Author: Greg Burdett,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-10 14:40:11

Descubrí que también estaba teniendo este error en NetBeans. Espero que lo siguiente sea útil.

  1. Asegúrese de que cuando vaya a Configuración del proyecto establezca la clase principal que desea ejecutar.
  2. Hacer una Construcción o Una Construcción Limpia
  3. Coloque el archivo jar donde desee e intente: java-jar "YourProject.jar " de nuevo en la línea de comandos.

Este era el problema que estaba teniendo porque tenía otros programas de "prueba" que estaba usando en NetBeans y tenía que asegurarme de que La clase principal en la parte de ejecución de la configuración del proyecto se estableció correctamente.

Muchas bendiciones, John P

 0
Author: john p,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-11 19:00:56

Estaba recibiendo el mismo error cuando corrí:
prueba jar cvfm.prueba de Tarro.manifiesto de clase.txt

Lo que lo resolvió fue esto:
prueba jar cvfm.manifiesto de tarro.prueba txt.clase

Mi manifiesto tiene el punto de entrada como se indica en oracle docs (asegúrese de que hay un nuevo carácter de línea al final del archivo):
Clase principal: Prueba

 0
Author: ObviousChild,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-22 17:36:11

Intenta

java -cp .:mail-1.4.1.jar JavaxMailHTML 

No es necesario tener un archivo manifest.

 0
Author: user4581964,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-19 01:46:32

Me enfrenté al mismo problema. Este comando unix no es capaz de encontrar la clase main. Esto se debe a que las versiones de JDK en tiempo de ejecución y de compilación son diferentes. Haga el jar a través de eclipse después de cambiar la versión del compilador de Java. El siguiente enlace me ayudó.

Http://crunchify.com/exception-in-thread-main-java-lang-unsupportedclassversionerror-comcrunchifymain-unsupported-major-minor-version-51-0/

Intente ejecutar el jar creado después de este paso y luego ejecute it

 0
Author: Harshita Sethi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-24 11:40:31

Si la ruta de acceso de su clase está completamente especificada en manifest, tal vez necesite la última versión de java runtime environment. Mi problema se solucionó cuando reinstalé el jre 8.

 0
Author: AmirHossein Rezaei,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-17 08:31:52

Si usas eclipse, prueba a continuación: 1. Haga clic derecho en el proyecto - > seleccionar Exportar 2. Seleccione el archivo Jar ejecutable en seleccionar un destino de exportación 3. Introduzca el nombre de jar y seleccione "Paquete requerido"... "(segundo botón de opción) - > Finalizar

Espero que esto ayude...!

 0
Author: Barani r,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-03 13:41:04