Novacreations

Desarollando Software

¿Qué es el classpath en Java, y cómo se usa?

Cuando programamos en Java, la mayoría de las veces nuestros programas hacen uso de clases ya empaquetadas en el JRE. Por ejemplo, tenemos un programa sencillo para hacer un INSERT dentro de una base de datos Sybase:

En este ejemplo podemos ver que hacemos uso de las librerías de Java JRE/JEE, importando las clases dentro del paquete java.sql. Mediante este import le dejamos saber al compilador que utilizaremos las clases que tenemos bajo ese paquete. Un ejemplo de esas clases es el objeto “conn”, instanciado de la clase Connection.

Si nosotros borramos dicho Import, entonces el compilador no sabrá en donde se encuentra daclarada dicha clase, y como nosotros mismos no hemos construido ninguna clase Connection, lo que sucederá es que no se pueda compilar el programa. En conclusión, mediante los Imports, estamos diciéndole al compilador cuáles clases ya construidas estaremos utilizando en nuestros programas.

Por otra parte, el CLASSPATH le dice al compilador EN DONDE están las clases que estamos declarando. En este caso, a pesar de que le digamos al compilador que utilizaremos la clase java.sql.Connection, si no existe el CLASSPATH, no sabra físicamente en donde está ubicada dicha clase. Las clases generalmente se encuentran empaquetadas en archivos con la extensión JAR. De esta forma, hay que comunicar a Java el lugar dentro del disco en donde tenemos el archivo JAR que contiene dicha clase.

Otro ejemplo, un poco mas complejo, es el tomar el nombre de la clase que vamos a utilizar, pero ahora en tiempo de ejecución, no en tiempo de diseño. Para ello, Java hace uso de sus capacidades de REFLEXIÓN, en donde puede determinar la clase que necesita “al vuelo”. En este programa, esto lo estamos haciendo mediante la siguiente línea de código:

Class.forName(“net.sourceforge.jtds.jdbc.Driver”);

En este punto nosotros no sabemos cual clase es la que se va a cargar.

La clase contenida dentro de la llamada a la Reflexión se debe de encontrar también en un paquete JAR, en algún lugar de nuestro disco. Para hacer uso de ella, tenemos que añadirla al CLASSPATH, pues java no tiene la habilidad de buscar en todo el disco duro a ver en donde es que se encuentra. Otra ventaja es que cambiando el CLASSPATH podemos tenemos las mismas clases pero en diferentes directorios, por ejemplo, si son pertenecientes a diferentes versiones. De esta forma, mantenemos separadas las versiones de cada una de las compilaciones.

El CLASSPATH generalmente se mantiene como una variable de entorno dentro de Windows, indicando el directorio en donde tenemos nuestros archivos JAR:

Y pueden visualizarse mediante el comando SET dentro de la línea de comandos.

Sin embargo, la variable de entorno CLASSPATH puede no existir. De esta forma, yo tendría llamarla explicitamente dentro de cada compilación, indicando el CLASSPATH que quiero seguir. En este ejemplo, yo tengo el archivo jtds-1.2.jar que contiene la clase que estoy instanciando.

Si intento correrlo normalmente, sin CLASSPATH explícito, obtendré la siguiente excepción:

Finalmente, para poder ejecutar correctamente dicho programa, tenemos que lanzar el siguiente comando:

java -cp ./jtds-1.2.jar;. SybaseTest

En donde mediante el parámetro -cp le decimos que obtenga la clase del archivo JAR que está en el mismo directorio (el punto indica el directorio actual) mas el directorio completo, pues nuestra clase SybaseTest no se encuentra dentro de ningún JAR.

Finalmente, esto no es necesario al momento de compilar, pues el compilador no sabe que utilizará clases externas…. esto se determina en tiempo de ejecución!!!.



One Response so far.

  1. Marlen says:

    Tus imagenes ya no se ven 🙁
    necesito algo mas grafico para entender


Subscribe to email feed



La fábrica de softw

La Fábrica de Software de la Dirección de Innovación y ...

Administradores de A

Durante años aplicación ES File Explorer era la mejor y ...

Apoyo del Conacyt a

El Consejo Nacional de Ciencia y Tecnología (Conacyt), como parte ...

Microsoft Surface St

Esta semana Microsoft anuncio la existencia de su nueva PC ...

Incuba tu proyecto c

¡Buscamos nuevas tecnologías! Si tu proyecto es seleccionado Telcel te otorgará ...

Las 10 funciones de

  Java 8 incluye nueva funcionalidad que nos permite tener un ...

Como usar una funci

Usar una función hash para encriptar una contraseña no es ...

Cómo escribir códi

Nunca supongas a la malicia lo que puede ser explicado ...

Las 114 preguntas de

¿Tienes una entrevista de trabajo en puerta para un posición Java? ...

Believe in technolog

Ziff Davis Publishing es la más grande editorial de contenidos ...