How to Set CLASSPATH in Java - Javatpoint

classpath

¿Te gustaría Java desde cero?
Tenemos los diplomados que necesitas.¡Haz clic aquí!

Cuando estás programando en Java y quieres hacer uso de alguna clase desde tu código que está en otro paquete o en una librería externa, debes incluir un import al principio de tu clase, algo así:

import java.lang.Math;
import com.miempresa.utilidades.MiUtilidad;

o, incluso, para importar varias clases dentro del mismo paquete, se puede usar un asterisco:

import java.lang.*;
import com.miempresa.utilidades.*;

Así, luego, en tu programa puedes hacer uso de las clases que has importado, de manera directa, en nuestro ejemplo, algo así:

System.out.println(Math.PI);
MiUtilidad prueba = new MiUtilidad();

que mostrará por consola el valor del número Pi, definido dentro de la clase Math, e instanciará un nuevo objeto de la clase MiUtilidad() que tenemos en una librería de terceros, por ejemplo.

¿Cómo sabe el compilador de Java dónde encontrar las clases que hemos importado? Más aún, si se trata de una clase de terceros, no de la plataforma, ¿de qué manera averigua dónde está y cómo ponerla a disposición de tu programa a partir del import?

Básicamente, la máquina virtual de Java (JVM) puede utilizar dos tipos de archivos para acceder a este código referenciado:

  • Archivos .class de código intermedio ByteCode, resultado de compilar nuestra aplicación.
  • Archivos .jar, que contienen dentro librerías y recursos de una aplicación o biblioteca de funciones, incluyendo archivos .class.
Cómo actualizar Java en tu ordenador

Los primeros suelen estar en la carpeta output de nuestro proyecto, por ejemplo, en el archivo carpeta output/com/miempresa/utilidades/MiUtilidad.class, junto a los demás archivos compilados de las demás clases de ese paquete.

Los segundos, .jar, pueden estar en cualquier sitio de nuestro sistema, en donde el compilador debe encontrarlos.

Pero lo que no tendría sentido es que, para localizar cada paquete, se recorriese el disco duro completo buscándolos.

Así, si la clase MiUtilidad que queremos emplear en nuestro código forma parte de una librería externa que nos han facilitado en forma de archivo .jar para su distribución, ¿cómo la localizan las herramientas de Java?

La respuesta está en una variable de entorno especial llamada CLASSPATH, que contiene las rutas en donde las herramientas de Java y la JVM deben mirar para localizar los archivos de código y los paquetes que se van a utilizar. Puede apuntar a las carpetas raíz de jerarquías de paquetes y rutas directas a archivos .jar.

¿Cómo se establece el CLASSPATH?

Básicamente existen dos formas de hacerlo:

  1. Estableciendo una variable de entorno del sistema
  2. Usando un parámetro específico al utilizar Java o sus herramientas

Variables de entorno

La primera opción, de las variables de entorno, es la más directa, porque además queda permanentemente establecida en nuestro sistema, pero al mismo tiempo es la más problemática, porque es una configuración no tan fácil de replicar y transportar a otro equipo o entorno y además podemos «arreglar» un programa y «cargarnos» otro por andar tocando la variable.

De todos modos, vamos a ver cómo se hace.

Por ejemplo, establecer en CLASSPATH en sistemas *NIX como Linux o macOS es tan sencillo como escribir esto:

export CLASSPATH=/home/usuario/misProyectos/libs/*:/utilidades/libs/utils.jar

Es decir, se establece la variable y se le pasan las rutas que sean necesarias, separándolas con el símbolo de dos puntos (:).

También podemos añadir una ruta a las rutas que hayamos establecido previamente usando una variable, así:

export CLASSPATH=${CLASSPATH}:/utilidades/libs/utils.jar

Lo que hará será expandir esa variable, sustituyéndola por su valor, para, a continuación, concatenarle la ruta o rutas adicionales que nos interesen.

Cómo descargar e instalar Java en Windows 10

En el caso de Windows, se puede hacer de manera visual con las propiedades avanzadas del sistema, pero desde línea de comandos podemos hacer lo mismo usando el comando set y separando las rutas con un punto y coma (;):

set classpath=C:\java\MisClases;C\Utilidades\libs\utils.jar

Del mismo modo, podemos expandir una variable para agregar rutas nuevas a las ya existentes:

set classpath=%classpath%;C\Utilidades\libs\utils.jar

Usando el parámetro -classpath

Generalmente es mejor idea utilizar este método, porque es mucho más fácil de transportar a otros sistemas y se puede incluir en algún tipo de archivo de script para automatizar las tareas de los proyectos.

Las herramientas de Java, como java para ejecutar o javac para compilar, admiten un parámetro -classpath o su versión abreviada -cp que sirven específicamente para establecer las rutas del CLASSPATH.

Así, es tan sencillo como hacer esto, por ejemplo, para compilar un programa:

java -d bin -cp /home/usuario/misProyectos/libs/*:/utilidades/libs/utils.jar miPrograma

Fíjate en cómo le pasamos los mismos valores que antes, en el caso de Linux o macOS separados por :, para indicar las rutas que queremos utilizar en el CLASSPATH. Además, con el parámetro -d le estamos diciendo en qué carpeta queremos que se generen los archivos compilados.

En Windows sería exactamente igual, pero separados por ;, como antes.

¿Qué pasa si tenemos mal establecido el CLASSPATH?

Pues básicamente es uno de los motivos de recibir un error de tipo java.lang.NoClassDefFoundError a la hora de ejecutar o compilar un proyecto.

Te esperamos en los siguientes artículos en donde hablaremos más acerca de estos temas, los cuales hoy en día son de vital importancia en el mundo de la tecnología.

¿Te gustaría Java desde cero?
Tenemos los diplomados que necesitas. ¡Haz clic aquí!

About Author

NGuerrero

0 0 votos
Article Rating
Suscribir
Notificar de
guest
0 Comments
Comentarios.
Ver todos los comentarios
0
¿Te gusta este articulo? por favor comentax