No se puede ejecutar el archivo jar: “sin atributo de manifiesto principal”

6 minutos de lectura

No se puede ejecutar el archivo jar sin atributo de
Ewoud

He instalado una aplicación, cuando intento ejecutarla (es un jar ejecutable) no pasa nada. Cuando lo ejecuto desde la línea de comandos con:

java -jar “aplicación.jar”

Recibo el siguiente mensaje:

sin atributo de manifiesto principal, en “app.jar”

Normalmente, si hubiera creado el programa yo mismo, habría agregado un atributo de clase principal al archivo de manifiesto. Pero en este caso, como el archivo es de una aplicación, no puedo hacer eso. También intenté extraer el jar para ver si podía encontrar la clase principal, pero hay muchas clases y ninguna de ellas tiene la palabra “principal” en su nombre. Debe haber una manera de solucionar esto porque el programa funciona bien en otros sistemas.

  • Busque los métodos principales; no puedes confiar en los nombres de las clases.

    – David Newton

    13 de marzo de 2012 a las 18:22

  • Lo sé, pero como solo tengo archivos .class, realmente no puedo ver los métodos. ¿O puedo?

    – Ewoud

    13 de marzo de 2012 a las 18:42

  • Realmente no estás escribiendo las comillas, ¿verdad? En cualquier caso, hay varias formas de ver los métodos, incluido el uso de javap. Sin embargo, es posible que desee desarmarlo y ver si en realidad no hay un manifiesto.

    – David Newton

    13 de marzo de 2012 a las 19:37

  • Relacionado: con dependencias: stackoverflow.com/a/23986765/360211

    – Weston

    13 de septiembre de 2015 a las 7:37

  • ¿Qué pasa si no tengo la clase principal mientras ejecuto el código usando CommandLineJobRunner?

    – Kamini

    2 de junio de 2017 a las 14:01

Eso debería haber sido java -jar app.jar en lugar de java -jar "app".

los -jar La opción solo funciona si el archivo JAR es un archivo JAR ejecutable, lo que significa que debe tener un archivo de manifiesto con un Main-Class atributo en él. Ver Empaquetado de programas en archivos JAR para aprender a crear un JAR ejecutable.

Si no es un JAR ejecutable, deberá ejecutar el programa con algo como:

java -cp app.jar com.somepackage.SomeClass

donde com.somepackage.SomeClass es la clase que contiene el main método para ejecutar el programa. (Cuál es esa clase depende del programa, es imposible saberlo a partir de la información que ha proporcionado).

  • gracias por su respuesta, pero su solución solo funciona si conozco el nombre de la clase que contiene el método principal. Y fue un error tipográfico… Se suponía que era “app.jar”. Pero, ¿cómo explica por qué se ejecuta en otros sistemas simplemente haciendo doble clic en el archivo?

    – Ewoud

    13 de marzo de 2012 a las 18:45

  • Si de hecho es un JAR ejecutable, puede extraer el archivo de manifiesto (está en el META-INF directorio dentro del archivo JAR). Debe contener un Main-Class atributo que le da el nombre de la clase principal.

    – Jesper

    14 de marzo de 2012 a las 6:21

  • Si no se ejecuta en un sistema, es posible que ese sistema tenga una versión de Java demasiado antigua. Si el JAR está, por ejemplo, compilado con Java 7, entonces no puede ejecutarlo en un sistema que tenga Java 6 o anterior.

    – Jesper

    14 de marzo de 2012 a las 6:23

  • Eso es divertido ya que el otro sistema ejecuta win7 y esta PC con los problemas ejecuta win8.

    – Ewoud

    15 de marzo de 2012 a las 17:42

  • @Jesper Hola, ¿qué pasa si Eclipse usa el paquete predeterminado? ¿Solo pongo el nombre de la clase?

    – Ogen

    18 de julio de 2014 a las 5:08

  • Perfecto, esto funciona. Agrupa todas las dependencias en un solo contenedor, lo que le permite compilar/construir un proyecto y ejecutarlo de forma inmediata.

    – Pablo

    26 de julio de 2015 a las 19:08


  • en el contexto de la complemento de sombrauno tiene que seguir la ayuda en JAR ejecutable.

    – koppor

    6 sep 2017 a las 8:40

  • Esto con maven-assembly-plugin trabajó. maven-jar-plugin No.

    – Martynas Jusevičius

    7 dic 2018 a las 21:25

  • Nota: pon este código en tu pom.xml archivo dentro <build><plugins> PUT IT HERE </plugins></build> y luego ejecute maven Package (en IDEA, abra el menú deslizante de maven a la derecha, busque proyecto> Ciclo de vida> paquete). Luego, su archivo jar estará en la carpeta Target. ¡Salud!

    – Kirill Karmazin

    10 de diciembre de 2018 a las 12:10

  • Realmente estaba luchando con este problema… Esto funciona perfectamente. ¡Gracias!

    – jmojico

    1 de febrero de 2019 a las 2:38

1646968991 222 No se puede ejecutar el archivo jar sin atributo de
Sasanka Panguluri

Esto se debe a que Java no puede encontrar el atributo principal en el archivo MANIFEST.MF. El atributo Main es necesario para decirle a Java qué clase debe usar como punto de entrada de la aplicación. Dentro del archivo jar, el archivo MANIFEST.MF se encuentra en la carpeta META-INF. ¿Se pregunta cómo podría mirar lo que hay dentro de un archivo jar? Abra el archivo jar con WinRAR.

El atributo principal dentro de MANIFEST.MF se ve así:

Main-Class: <packagename>.<classname>

Obtiene este error “sin atributo de manifiesto principal” cuando falta esta línea en el archivo MANIFEST.MF.

Es realmente un gran lío especificar este atributo dentro del archivo MANIFEST.MF.

Actualización: acabo de encontrar una forma realmente ordenada de especificar el punto de entrada de la aplicación en eclipse. Cuando dice Exportar,

Select Jar and next 

[ give it a name in the next window ] and next

and next again

and you'll see " Select the class of the application entry point".

Just pick a class and Eclipse will automatically build a cool MANIFEST.MF for you.

ingrese la descripción de la imagen aquí

No se puede ejecutar el archivo jar sin atributo de
Naga Srinu Kapusetti

Tuve el mismo problema. al agregar las siguientes líneas al archivo pom lo hizo funcionar. El complemento se asegurará del proceso de compilación de su aplicación con todos los pasos necesarios.

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

1646968993 105 No se puede ejecutar el archivo jar sin atributo de
estrella de la mañana

Tuve este problema al crear un jar usando IntelliJ IDEA. Ver esta discusión.

Lo que me resolvió fue volver a crear el artefacto jar, eligiendo JAR > Desde módulos con dependencias, pero sin aceptar el directorio predeterminado para META-INF/MANIFEST.MF. Cámbielo de -/src/main/java a -/src/main/resources.

De lo contrario, estaba incluyendo un archivo de manifiesto en el contenedor, pero no el que debería tener en -/src/main/java.

  • Esto funcionó para mí con IDEA 14.1.6. También agregué la propiedad de compilación para pom.xml pero no tuvo ningún efecto. Pero tu respuesta lo resolvió, gracias.

    – lsrom

    30/10/2016 a las 22:34

  • Gracias por evitar que mi escritorio se abolle por la pura frustración de que nada más funcione;) Su enlace parece roto, pero puedo confirmar que funciona perfectamente. Probado con IntelliJ IDEA 2018.2.5 (Community Edition)

    – Matthias Bö

    12 de noviembre de 2018 a las 13:42

  • confirmó que esto funciona, aunque no tengo un directorio /resources

    – lxknvlk

    4 oct 2019 a las 16:37

  • enlace roto, quisiste decir https://stackoverflow.com/questions/20952713/wrong-manifest-mf-in-intellij-idea-created-jar?

    – ben

    4 de septiembre de 2020 a las 8:12

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad