Me encuentro desarrollando una aplicación Java que utiliza un paquete de clases de un tercero. Este paquete lo he descargado del sitio del desarrollador en formato JAR.



El formato de archivo JAR (Java ARchive) se utiliza para agregar muchos archivos de clases Java junto con sus metadatos y recursos asociados (texto, imágenes, etc.) en un único archivo para distribuir una aplicación de software o librería en la plataforma Java. Los archivos JAR utilizan el formato ZIP y tienen extensión .jar.

A modo de ejemplo supongamos que estamos desarrollando la clase "HolaMundo" utilizando nuestro editor de texto favorito (en mi caso desarrollo utilizando gedit o kate):

HolaMundo.java

class HolaMundo {

    public static void main(String[] args) {

        System.out.println("Hola mundo!");

    }

}

Para compilar nuestra clase ejecutamos:

$ javac HolaMundo.java

Este comando produce el archivo binario HolaMundo.class. Para ejecutar la aplicación "HolaMundo" utilizamos:

$ java HolaMundo

La salida esperada es:

Hola mundo!

Supongamos ahora que deseamos utilizar la clase "Pepe", perteneciente al paquete "com.pepe", la cual se incluye en el archivo pepe-1.0.jar que hemos descargado del sitio de su desarrollador. ¿Cómo se debe indicarle al compilador javac que debe buscar la clase "Pepe" dentro del archivo pepe-1.0.jar?

Fácil, agregando la ruta al archivo pepe-1.0.jar en el CLASSPATH.

El CLASSPATH es un parámetro (seteado en la línea de comando, o a través de una variable de entorno) que le indica a la máquina virtual Java o al complilador Java dónde buscar clases y paquetes definidos por el usuario.

Modificamos el código para incluir la clase "Pepe":

HolaMundo.java

import com.pepe.Pepe;

class HolaMundo {

    public static void main(String[] args) {

        System.out.println("Hola mundo!");

        Pepe pepe = new Pepe();

        pepe.hacerAlgoGenial();

    }

}

Para compilar la clase "HolaMundo.java", la cual utiliza clases incluidas en el archivo pepe-1.0.jar, es necesario setear el CLASSPATH mediante el parámetro -cp:

$ javac -cp ".:/ruta/al/archivo/pepe-1.0.jar" HolaMundo.java

De la misma forma se ejecuta la aplicación:

$ java -cp ".:/ruta/al/archivo/pepe-1.0.jar" HolaMundo

Veamos cómo seteamos el CLASSPATH. Entre comillas dobles se indica una lista de direcorios y/o archivos donde buscar clases. Cada elemento de la lista se separa con dos puntos : (en GNU/Linux, en Windows se deben separar con punto y coma ;). En el ejemplo, la lista posee dos elementos: el primer elemento '.' indica que se busquen clases en el directorio actual; el segundo elemento '/ruta/al/archivo/pepe-1.0.jar' indica que se busquen clases dentro del archivo pepe-1.0.jar que se encuentra en el directorio /ruta/al/archivo/.

En los sistemas operativos Windows funciona exactamente igual, a excepción de que se debe utilizar punto y coma en vez de dos puntos:

$ java -cp .;C:\ruta\al\archivo\pepe-1.0.jar HolaMundo

Espero que se haya entendido. Hasta el próximo artículo!!


Tal vez pueda interesarte


Compartí este artículo