No se puede ejecutar el archivo jar: "sin atributo de manifiesto principal"
He instalado una aplicación, cuando intento ejecutarla (es un jar ejecutable) no pasa nada. Cuando la ejecuto desde la línea de comandos con java -jar "app.jar"";
me sale el siguiente mensaje:
no hay atributo de manifiesto principal, en "app.jar";
Normalmente, si hubiera creado el programa yo mismo, habría añadido un atributo de clase principal al archivo de manifiesto. Pero en este caso, como el archivo es de una aplicación, no puedo hacerlo. También intenté extraer el jar para ver si podía encontrar la clase principal, pero hay demasiadas clases y ninguna de ellas tiene la palabra "main" en su nombre. Debe haber una manera de arreglar esto porque el programa funciona bien en otros sistemas.
861
3
En primer lugar, es un poco raro, ver que ejecutas
java -jar "app"
y nojava -jar app.jar
Segundo, para hacer un jar ejecutable... necesitas hacer un archivo llamado META-INF/MANIFEST.MF
el archivo en sí debe tener (al menos) esta línea:
Donde
com.mypackage.MyClass
es la clase que contiene el punto de entrada public static void main(String[] args).Tenga en cuenta que hay varias maneras de hacer esto, ya sea con la CLI, Maven, Ant o Gradle:
Para CLI, el siguiente comando servirá: (tks @[dvvrt][1])
Para Maven, algo como el siguiente fragmento debería funcionar. Ten en cuenta que esto es sólo la definición del plugin, no el pom.xml completo:
Debería haber sido
java -jar app.jar
en lugar dejava -jar "app"
.La opción
-jar
sólo funciona si el archivo JAR es un archivo JAR ejecutable, lo que significa que debe tener un archivo de manifiesto con un atributoMain-Class
en él. Vea Empaquetar programas en archivos JAR para aprender a crear un JAR ejecutable.Si no es un JAR ejecutable, entonces tendrás que ejecutar el programa con algo como
donde
com.somepackage.SomeClass
es la clase que contiene el métodomain
para ejecutar el programa. (Lo que es esa clase depende del programa, es imposible saberlo por la información que has proporcionado).Si el jar no sigue las reglas, no es un jar ejecutable.