Programación Java: Error al ejecutar archivo *.jar “Failed to load main-class manifest attribute from … “

Os cuento un problema que yo mismo he experimentado y al que he podido encontrar solución tras un rato de navegar.

Mediante el programa NetBeans, he creado un sencillo programa de Java. Dentro del programa, usando F6 para ejecutar, se ejecutaba y funcionaba correctamente. Pero lo suyo es crear un archivo ejecutable para poder usar ese programita desde cualquier parte.

Para ello, en NetBeans, se pulsa F11, que sirve para crear un archivo ejecutable, con extensión *.jar (es un equivalente a *.exe para programas creados con Java).

Pongamos que mi proyecto se llama nombreProyecto. Ese archivo*.jar se crea automáticamente dentro de la carpeta /NetBeansProjects/nombreProyecto/dist/ . Y en teoría, basta con abrirlo para que el programa se abra. Pero en lugar de eso, mensaje de error: “Failed to load main-class manifest attribute from …“. Así que a investigar qué puede haber fallado.

En foros leía que tenía que asegurarme de que en mi paquete existía una clase Main, que se encarga de ejecutar el código. Sí, existía. Y aunque no exista, basta con que la clase que hemos desarrollado tenga un método “public static void main(String args[])” que contenga el código para ejecutar.

También puede ser importante que nuestro proyecto esté marcado como Proyecto Principal. Esto se hace desde la ventana “Proyectos” del NetBeans, click derecho sobre nuestro proyecto, y pulsando en “Establecer como proyecto principal“.

Así que los tiros van por otro lado: resulta que, por motivos que desconozco, NetBeans no ha hecho por nosotros un necesario paso, que es crear un archivo llamado “manifest.mf“, que es necesario para que el *.jar funcione.

Por tanto, ante este error, la solución es:

1. Ir a la carpeta /NetBeansProjects/nombreProyecto (es decir, la raíz del proyecto en que estamos trabajando) y ahí crear un archivo con el nombre “manifest.mf”. Lo abrimos con el bloc de notas y escribimos esto (o por lo menos, esto tengo yo, supongo que no todo es necesario, pero así lo vi en internet y así me ha funcionado):

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.1
Created-By: 10.0-b23 (Sun Microsystems Inc.)

2. Ir a la carpeta /NetBeansProjects/nombreProyecto/nbproject . Ahí abrimos con el bloc de notas el archivo project.properties . Y añadimos, debajo de la última línea por ejemplo, esta línea:

manifest.file=manifest.mf

3. Y ya está. Por si acaso, borrad el *.jar que no funcionaba, y lo volvéis a crear desde el NetBeans, como siempre, pulsando F11 (en la ventana que aparece pulsad “Limpiar y Construir“). Y ahí tendremos nuestro *.jar que ya sí funcionará correctamente, y que podemos dejar en cualquier carpeta de cualquier ordenador para ser ejecutado.

Anuncios

13 pensamientos en “Programación Java: Error al ejecutar archivo *.jar “Failed to load main-class manifest attribute from … “

    1. admin Autor de la entrada

      Quien sabe… sólo sé que este problema le sucede a mucha gente, y que con lo que aquí cuento se soluciona 🙂

      saludos!

      Responder
  1. Daniel Valdebenito

    Excelente, busqué por todos lados y en el unico lugar que encontre la solución.
    Muchas Gracias, está todo muy bien explicado

    Responder
  2. Jorge Peña

    Puede ser ello pero en ocasiones el jdk influye mucho para la ejecución de las aplicaciones, me paso que tenia una aplicación trabajando en netbeans con JDK 7, y cuando creaba el .jar con Shift+f11 todo normal pero cuando lo ejecutaba me aparecia error de que la clase principal no se encuentra, lo que hice fue irme a netbeans click derecho en propiedades del proyecto en Sources cambie en la parte inferior en la lista desplegable donde aparecia Source/Bynary Format el JDK 7 a JDK6 y click en “Ok”, compile de nuevo con shift+f11 el proyecto y lo ejecute desde el .jar y funciono a la maravilla. Saludos.

    Responder
  3. maciel

    HOla hice lo k dijiste y si funciono

    pero tengo un problema no muestra los reportes que necesito que muestre y ejecutandolo sin haber creado el .jar si funciona, alguine me puede ayudar a resolver este problema, porfavor, muchas gracias.

    Responder

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s