2012-04-12 47 views
16

Estoy intentando crear un archivo .jar usando la terminal mac pero estoy teniendo problemas. Seguí los pasos here pero no tuve éxito. Tengo este mensaje de error:Cómo crear un archivo .jar usando la terminal

Failed to load Main-Class manifest attribute from 
aclient.jar 

Entonces, ¿cómo vas a hacerlo? Mi programa Java se llama Main.java y lo he compilado en un archivo .class. ¿Ahora que hago?

Gracias

Respuesta

40

1) Asegúrese de que todos los archivos necesarios están dentro del directorio, que han abierto un terminal/Símbolo del sistema y han navegado a ese directorio.

2) compilar la clase .java, por ejemplo HelloWorld.java con

javac HelloWorld.java 

3) Esto producirá un archivo .class necesario para el archivo JAR.

4) A continuación, cree un archivo de manifiesto (guardado con la extensión .txt) utilizando el editor de texto y la entrada de la siguiente

Main-Class: HelloWorld 

o lo que sea el nombre de su archivo es.

5) A continuación, cree el archivo JAR utilizando este código:

jar cfm HelloWorld.jar Manifest.txt HelloWorld.class 

6) Ejecutar el archivo:

java -jar HelloWorld.jar 

Si algo parece claro consultar estos sitios web: creating a jar file y setting an applications entry point.

Espero que esto ayude a los demás, ¡saludos, Tom!

Editar:

Siguiendo el comentario de inga vale la pena señalar que con el fin de incluir varios archivos en el frasco es necesario utilizar el:

javac *.java 

seguido por

jar cfm HelloWorld.jar Manifest.txt *.class 
+0

Gracias ! Me metí en problemas para seguir sus instrucciones porque tengo varios archivos Java en mi proyecto. Al principio pensé que solo tenía que compilar mi clase principal, pero si tienes múltiples archivos java, debes compilarlos todos para que en lugar de "javac HelloWorld.java" tengas que hacer "javac * .java" y "jar cfm". HelloWorld.jar Manifest.txt HelloWorld.class "sería" jar cfm HelloWorld.jar Manifest.txt * .class ". Aún así, solo tiene que indicar la clase principal en el archivo Manifiesto. Espero que esto ayude si alguien está cometiendo el mismo error que yo. – inga

+1

@inga He actualizado mi respuesta para incluir sus comentarios. ¡Gracias por la información! – Katana24

2

Es necesario tener un archivo de texto que define la clase principal . por ejemplo

% cat MyMain 
Main-Class: HelloWorld 

continuación

%jar cvfm foo.jar MyMain *.class 
%java -jar foo.jar 
Hello world 

Ver: http://java.sun.com/j2se/1.4.2/runtime.html#example

+0

Seguí su enlace y creé un ejemplo sencillo. Para el archivo de texto, los contenidos son solo de clase principal: HelloWorld ¿O debería haber algún otro texto allí? ¿También debería guardarse como un archivo .txt o con .mf o algo así? – Katana24

+1

Por cierto, sigo recibiendo Error al manifestar el error manifiesto de la clase principal incluso después de seguir su consejo:/ – Katana24

+0

Probar% jar xvf foo.jar creado: META-INF/ inflado: META-INF/MANIFEST.MF inflated: HelloWorld.class y luego mirar el MANIFESTMF debería verse como Manifest-Version: 1.0 Created-By: 1.6.0_31 (Apple Inc.) Main-Class: HelloWorld –

3

Tal vez esto ayudará a re archivo Manifest.txt:

Advertencia: El archivo de texto debe terminar con una ne línea w o retorno de carro. La última línea no se analizará correctamente si no termina con una nueva línea o retorno de carro.

4

Sí, tenemos que usar una nueva línea al final del nombre de la clase ...Funcionó para mí

es decir, de Main-Class: HelloWorld

It will look like this in Notepad++ 
1.Main-Class: HelloWorld 
2. 
Cuestiones relacionadas