0% encontró este documento útil (0 votos)
21 vistas5 páginas

Java - Qué Es El Classpath y Cómo Lo Ajusto - CampusMVP - Es

El classpath en Java es una variable de entorno que indica a la JVM dónde buscar los archivos de clases y bibliotecas necesarias para la ejecución de un programa. Se puede establecer de forma permanente como una variable de entorno del sistema o temporalmente mediante el parámetro -classpath al ejecutar herramientas de Java. Un classpath mal configurado puede resultar en errores como java.lang.NoClassDefFoundError.

Cargado por

480
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
21 vistas5 páginas

Java - Qué Es El Classpath y Cómo Lo Ajusto - CampusMVP - Es

El classpath en Java es una variable de entorno que indica a la JVM dónde buscar los archivos de clases y bibliotecas necesarias para la ejecución de un programa. Se puede establecer de forma permanente como una variable de entorno del sistema o temporalmente mediante el parámetro -classpath al ejecutar herramientas de Java. Un classpath mal configurado puede resultar en errores como java.lang.NoClassDefFoundError.

Cargado por

480
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 5

Java: qué es el classpath y cómo lo ajusto | campusMVP.es https://www.campusmvp.es/recursos/post/java-que-es-el-classpath-y...

La mejor forma de Aprender Programación online y en español


www.campusmvp.es

Java: qué es el classpath y cómo lo ajusto


Publicado por campusMVP el 22 de junio de 2021 a las 08:00

De cero a Javero en 3 meses con nuestro curso online Infórmate aquí

Ya hemos explicado con detalle en este blog qué son los paquetes de Java y cómo
se utilizan.

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í:

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

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

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

1 de 5 17/10/2024, 11:34
Java: qué es el classpath y cómo lo ajusto | campusMVP.es https://www.campusmvp.es/recursos/post/java-que-es-el-classpath-y...

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

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

que mostrará por consola el valor del número Pi, de�nido 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 .

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

2 de 5 17/10/2024, 11:34
Java: qué es el classpath y cómo lo ajusto | campusMVP.es https://www.campusmvp.es/recursos/post/java-que-es-el-classpath-y...

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í�co 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 con�guració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:

1 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í:

3 de 5 17/10/2024, 11:34
Java: qué es el classpath y cómo lo ajusto | campusMVP.es https://www.campusmvp.es/recursos/post/java-que-es-el-classpath-y...

1 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.

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 ( ; ):

1 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:

1 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í�camente para establecer las rutas del CLASSPATH .

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

1 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.

4 de 5 17/10/2024, 11:34
Java: qué es el classpath y cómo lo ajusto | campusMVP.es https://www.campusmvp.es/recursos/post/java-que-es-el-classpath-y...

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,
como ya hemos explicado con detalle aquí: Cómo solucionar el error
"java.lang.NoClassDefFoundError" en Java.

Aprende con nosotros a sacarle todo el partido a Spring Framework y Spring


Boot.

campusMVP es la mejor forma de aprender a programar online y en


español. En nuestros cursos solamente encontrarás contenidos propios
de alta calidad (teoría+vídeos+prácticas) creados y tutelados por los
principales expertos del sector. Nosotros vamos mucho más allá de
una simple colección de vídeos colgados en Internet porque nuestro
principal objetivo es que tú aprendas.

Archivado en: Lenguajes y plataformas

Comentarios (1) -

Santiago
09/12/2021 17:54:47

Muy buena la explicación, muchas gracias!

Responder

© Krasis Consulting S.L.U. - Aviso Legal y Política de privacidad - Política de Cookies - Gestionar cookies

5 de 5 17/10/2024, 11:34

También podría gustarte