¿Cómo hacer un archivo JAR ejecutable?

82

Tengo un programa que consta de dos archivos Java Swing simples.

¿Cómo hago un archivo JAR ejecutable para mi programa?

Rubén
fuente
¿Que estas preguntando? ¿Cómo ejecutar el jar o cómo crear un ejecutable desde el jar (un comando, como run.cmd)?
AlikElzin-kilaka
Relacionados: superuser.com/questions/912955/...
AlikElzin-Kilaka

Respuestas:

83

Un archivo jar es simplemente un archivo que contiene una colección de archivos java. Para hacer que un archivo jar sea ejecutable, debe especificar dónde está la mainclase en el archivo jar. El código de ejemplo sería el siguiente.

public class JarExample {

    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                // your logic here
            }
        });
    }
}

Compile sus clases. Para hacer un frasco, también necesita crear un archivo de manifiesto ( MANIFEST.MF). Por ejemplo,

Manifest-Version: 1.0
Main-Class: JarExample

Coloque los archivos de clase de salida compilados (JarExample.class, JarExample $ 1.class) y el archivo de manifiesto en la misma carpeta. En el símbolo del sistema, vaya a la carpeta donde se colocaron sus archivos y cree el jar usando el comando jar. Por ejemplo (si nombra su archivo de manifiesto como jexample.mf)

jar cfm jarexample.jar jexample.mf *.class

Creará el ejecutable jarexample.jar.

isurusndr
fuente
34
Solo mis dos centavos: no necesariamente tiene que crear un archivo de manifiesto. Para la utilidad jar , si especifica el indicador e en lugar de m , solo necesita especificar el punto de entrada (es decir, la clase principal) de la aplicación, en lugar de un archivo de manifiesto. Ejemplo:jar cvfe jarexample.jar com.example.jar.JarExample *.class
Powerslave
1
Si crea el archivo MANIFEST.MF, no olvide terminar la última línea con un salto de línea. En Windows, simplemente agregue una línea vacía al final. De lo contrario, el último atributo no aparecerá en el archivo jar. En este caso especial, faltará el atributo Main-Class.
David
35

En Eclipse puedes hacerlo simplemente de la siguiente manera:

Haga clic derecho en su proyecto Java y seleccione Exportar .

Seleccione Java -> Archivo JAR ejecutable -> Siguiente.

Seleccione la configuración de lanzamiento y elija el archivo de proyecto como su clase principal

Seleccione la carpeta de destino donde le gustaría guardarla y haga clic en Finalizar.

Twinscode
fuente
Configuración de lanzamiento: <MainClasssName> - <ProjectName>
corlaez
15

Aquí está en una línea:

jar cvfe myjar.jar package.MainClass *.class

¿Dónde MainClassestá la clase con tu mainmétodo y packageesMainClass el paquete.

Tenga en cuenta que debe compilar sus .javaarchivos en .classarchivos antes de hacer esto.

c  create new archive
v  generate verbose output on standard output
f  specify archive file name
e  specify application entry point for stand-alone application bundled into an executable jar file

Esta respuesta se inspiró en el comentario de Powerslave sobre otra respuesta.

Río
fuente
Recibo un error,Error: Could not find or load main class mtx.testClass Caused by: java.lang.ClassNotFoundException: mtx.testClass
Anton Stafeyev
¿Está testClassdefinido en uno de sus .classarchivos? Asegúrese de haber compilado sus .javaarchivos fuente ( ) antes de ejecutar este comando. Además, por lo general, su clase debería ser UpperCamelCase, puede intentar cambiarle el nombre a TestClass.
Río
4

Si usa maven, agregue lo siguiente a su archivo pom.xml :

<plugin>
    <!-- Build an executable JAR -->
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <archive>
            <manifest>
                <mainClass>com.path.to.YourMainClass</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>

Entonces puedes correr mvn package. El archivo jar se ubicará en el directorio de destino .

Willi Mentzel
fuente
Una variante que la anterior.
Vishwa Ratna
0

Es demasiado tarde para responder a esta pregunta. Pero si alguien está buscando esta respuesta ahora, la he hecho para que se ejecute sin errores.

En primer lugar, asegúrese de descargar y agregar maven a la ruta . [ mvn --version] le dará las especificaciones de la versión si lo ha agregado a la ruta correctamente.

Ahora, agregue el siguiente código al proyecto maven [ pom.xml], en el siguiente código reemplácelo con su propio punto de entrada del archivo principal, por ejemplo, [ com.example.test.Test ].

      <plugin>
            <!-- Build an executable JAR -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <archive>
                    <manifest>
                    <mainClass>
            your_package_to_class_that_contains_main_file .MainFileName</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>

Ahora vaya a la línea de comando [ CMD] en su proyecto y escriba mvn packagey generará un archivo jar como algo así como ProjectName-0.0.1-SNAPSHOT.jarbajo targetdirectorio.

Ahora navegue hasta el directorio de destino por .cd target

Finalmente escriba java -jar jar-file-name.jary sí, esto debería funcionar correctamente si no tiene ningún error en su programa.

Badri Paudel
fuente