java

Compilar proyecto de Java con NetBeans y Maven (crear jar)

En el post de hoy vamos a ver cómo generar un JAR de tu proyecto de NetBeans si usas Maven como gestor de dependencias.

Al final tendrás un archivo que vas a poder distribuir y que ejecutará toda tu aplicación de Java.

Configurando clase principal

Recomiendo hacer los siguientes pasos solo si al ejecutar el jar encuentras el mismo error que yo. Si no, no es necesario y puedes saltar hasta el siguiente apartado.

Yo había creado una aplicación con Swing y configuré la clase principal como el JFrame. Eso funcionó bien para ejecutar el programa en el IDE, pero al compilar y ejecutar tuve problemas.

Había un error que decía:

no main manifest attribute, in mi archivo.jar

Entonces investigué que se debe agregar lo siguiente al pom.xml:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <mainClass>me.parzibyte.traductorswing.FramePrincipal</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>

Solo cambia la mainClass por tu mainClass. En mi caso mi pom completo queda así:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>me.parzibyte.traductorswing</groupId>
    <artifactId>TraductorSwing</artifactId>
    <version>1.0-SNAPSHOT</version>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <exec.mainClass>me.parzibyte.traductorswing.FramePrincipal</exec.mainClass>
    </properties>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <mainClass>me.parzibyte.traductorswing.FramePrincipal</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>    
</project>

Yo saqué el nombre de mi mainClass de la línea 11.

Compilando jar con NetBeans

Una vez configurada la clase principal ya podemos compilar presionando F11 o yendo a Run > Clean and build project. Eso va a generar un archivo jar en la carpeta target de nuestro proyecto.

Si te sirve de algo, en mi caso encontré el .jar en C:\Users\parzibyte\Documents\NetBeansProjects\TraductorSwing\target, básicamente en NetBeansProjects de mis documentos.

Nota: una cosa es compilar el .java a un .class, ya que el jar simplemente empaqueta y todo eso. Lo digo para que no haya confusiones.

Ejecutar archivo de Java compilado

Después de eso ya podemos distribuir nuestro jar. Recuerda que para ejecutarlo necesitas el JRE o el JDK, y se abre dándole doble clic o alternativamente desde la terminal con:

java -jar nombre_de_tu_jar.jar

Por ejemplo, en mi caso es (aunque igual se abre con doble clic):

java -jar TraductorSwing-1.0-SNAPSHOT.jar

Y como es una app con Swing de un simple traductor aparece lo siguiente:

Ejecutando proyecto de Java compilado en JAR con NetBeans y Maven

Con esto ya podemos compilar cualquiera de nuestros proyectos de Java que hacemos en el IDE NetBeans y enviarlos a nuestros clientes, amigos o quien sea.

Por aquí te dejo más tutoriales de Java.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

  • Amigo muchisimas gracias, me funciono tu solución, extra a esto tambien realice lo siguiente, al contruir mi Jar lo hice con la opción de contruir con dependencias "Build with Dependencies", esto debido a que estoy trabajando con el JDK 20.

    saludos y de nuevo muchas gracias

Entradas recientes

Cancelar trabajo de impresión con C++

En este post te quiero compartir un código de C++ para listar y cancelar trabajos…

4 semanas hace

Copiar bytes de Golang a JavaScript con WebAssembly

Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…

2 meses hace

Imprimir PDF con Ghostscript en Windows de manera programada

Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…

2 meses hace

Hacer pruebas en impresora térmica Bluetooth Android

Esta semana estuve recreando la API del plugin para impresoras térmicas en Android (HTTP a…

2 meses hace

Limpiar clave PEM

Hoy te enseñaré a extraer la cadena base64 de una clave PEM usando una función…

2 meses hace

Foco con Telegram, apagador de 3 vías, relevador y ESP8266

Encender un foco con un Bot de Telegram es posible usando una tarjeta como la…

2 meses hace