Blog sobre desarrollo en Java/Jakarta EE, VueJS, DevOps y más..

domingo, 30 de agosto de 2020

Crear JAR con dependencias

 

Días atrás tuve que desarrollar un pequeño cliente standalone con algunas dependencias para automatizar unas peticiones a un servicio web. Al momento de ejecutarlo desde Netbeans no hubo problemas. Estos comenzaron a presentarse cuando intente ejecutar la aplicación desde consola mediante el comando java -jar, ya que primero no encontraba la clase principal y luego no encontraba las clases que estaban contenidas en las dependencias arrojando un error de java.lang.ClassNotFoundException.

Para solucionar estos inconvenientes, añadí en el archivo pom.xml un plugin llamado "maven-assembly-plugin", el cual nos permite crear un archivo .jar ejecutable incluyendo todas las dependencias dentro de el.

Dentro de la sección "plugins", debemos agregar lo siguiente:

   <!-- Maven assembly-->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>3.0.0</version>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
          <archive>
            <manifest>
              <mainClass>com.fcastillo.upload.files.app.App</mainClass>
            </manifest>
          </archive>
        </configuration>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

Es muy importante que entre las etiquetas <manifest>, coloquemos el nombre de la clase principal o ejecutable, que en este caso es App y esta dentro del paquete com.fcastillo.upload.files.app.

Con esto solo nos resta ubicarnos en la raíz de nuestro proyecto y ejecutar el comando: mvn package 


 Maven comenzara a descargar las dependencias y a empaquetarlas en un archivo jar. En la siguiente salida de consola vemos que se crearon dos archivos:

*upload-file.jar
*upload-file-jar-with-dependencies.jar (es el que debemos usar)

 

 

Con esto ya podremos ejecutar nuestro archivo jar sin problemas mediante java -jar upload-file-jar-with-dependencies.jar

Compartir:

sábado, 11 de julio de 2020

Instalar Jaspersoft Studio en Fedora 32

Instalar Jaspersoft Studio en Fedora 32

Imagen extraída de https://i.ytimg.com/vi/yRLvJgz9Dxk/maxresdefault.jpg

Jaspersoft es una herramienta que nos permite diseñar reportes. Para trabajar con el, lo primero que debemos hacer es descargarlo desde su sitio oficial: https://community.jaspersoft.com/project/jaspersoft-studio/releases

Finalizada la descarga, descomprimimos el paquete con extensión .tgz y copiamos su contenido en el directorio /opt

Crear lanzador

Para poder ejecutar Jasper debemos crear el archivo jasper.desktop dentro del directorio /usr/share/applications/ con el siguiente contenido en su interior:

[Desktop Entry]
Name=JasperSoft Studio
Comment= Diseño de reportes
GenericName=Jasper
Exec=/opt/jasper/runjss.sh
Icon=/opt/jasper/icon.xpm
Type=Application
Categories=GNOME;Utility;Development
StartupNotify=true

Guardamos los cambios, y nuestro lanzador ya estará disponible en el menú de aplicaciones.


Compartir:

viernes, 10 de julio de 2020

¡Hola mundo!

Imagen extraida de https://medium.com/@eraylson_/the-hello-world-in-data-science-and-machine-learning-32b85946eb67
La idea de escribir surgió hace algunos años atrás cuando me dijeron: "Tienes que desarrollar una aplicación web Java en 4 meses". En aquel momento sentí que me pedían construir un edificio, cuando apenas sabia preparar un balde con cemento. Lo tomé como un desafío personal, aunque debo decir que con mucho pesar, angustia, preocupación, un poco de enfado, entre otros sentimientos.

Comencé la travesía buscando la casi nula información en español por aquel entonces acerca de JSF (especificación para construir aplicaciones web en Jakarta EE), recorrí cuanto blog, documento en PDF y canal de YouTube encontré, ya no importaba si la información se encontraba en español, inglés, portugués, o cualquier otro idioma, me interesaban los ejemplos con código (que a fin de cuentas es el mismo para todos). Así fui recolectando un poco por aquí, un poco por allá, un poco por el otro lado, y cuando tuve todo lo necesario comencé con el proyecto. Allí me surgió el siguiente interrogante: ¿Como unir todas esas partes y formar un todo funcional?, y la respuesta fue: "como se hace todo en la vida a prueba y error", y de ese modo "construí el edificio" en 4 meses.

Fue tan injusta aquella situación que dije: "Si en algún momento tengo la posibilidad de ayudar a un compañero, con algún ejemplo o fragmento de código lo haré". En aquellos años, nunca entendí la "mezquindad" del conocimiento por parte de algunas personas,  aunque afortunadamente, en el camino encontré buenos samaritanos que desinteresadamente me extendieron su mano amiga para ayudarme.


Así este blog cobra sentido, ya que esta pensado para extender una mano amiga
con algunos ejemplos basados en: JSF, Primefaces, Jakarta EE, Bootsfaces, JasperReports, MariaDB, Payara Server, entre otras tecnologías asociadas al mundo Java.

Espero sea de utilidad.
Compartir:

Acerca de mí

Mi foto
Capital, Santiago del Estero, Argentina