logo

Cómo configurar CLASSPATH en Java

RUTA DE CLASES: CLASSPATH es una variable de entorno que utiliza Application ClassLoader para localizar y cargar los archivos .class. CLASSPATH define la ruta para buscar clases de terceros y definidas por el usuario que no son extensiones ni forman parte de la plataforma Java. Incluya todos los directorios que contienen archivos .class y archivos JAR al configurar CLASSPATH.

Debe configurar CLASSPATH si:

ubicación df
  • Debe cargar una clase que no esté presente en el directorio actual ni en ningún subdirectorio.
  • Debe cargar una clase que no esté en una ubicación especificada por el mecanismo de extensiones.

CLASSPATH depende de lo que esté configurando CLASSPATH. CLASSPATH tiene un nombre de directorio o de archivo al final. Los siguientes puntos describen cuál debería ser el final de CLASSPATH.

  • Si es un JAR o zip, el archivo contiene archivos de clase, CLASSPATH termina con el nombre del archivo zip o JAR.
  • Si los archivos de clase se colocan en un paquete sin nombre, CLASSPATH termina con el directorio que contiene los archivos de clase.
  • Si los archivos de clase se colocan en un paquete con nombre, CLASSPATH termina con el directorio que contiene el paquete raíz en el nombre completo del paquete, es decir, el primer paquete en el nombre completo del paquete.

El valor predeterminado de CLASSPATH es un punto (.). Significa el único directorio actual buscado. El valor predeterminado de CLASSPATH se anula cuando configura la variable CLASSPATH o utiliza el comando -classpath (para abreviar -cp). Coloque un punto (.) en la nueva configuración si desea incluir el directorio actual en la ruta de búsqueda.

Si CLASSPATH encuentra un archivo de clase que está presente en el directorio actual, cargará la clase y la usará, independientemente de que la clase con el mismo nombre esté presente en otro directorio que también esté incluido en CLASSPATH.

Si desea establecer varias rutas de clase, debe separar cada CLASSPATH con un punto y coma (;).

Las aplicaciones de terceros (MySQL y Oracle) que utilizan la JVM pueden modificar la variable de entorno CLASSPATH para incluir las bibliotecas que utilizan. Las clases se pueden almacenar en directorios o archivos. Las clases de la plataforma Java se almacenan en rt.jar.

Hay dos formas de configurar CLASSPATH: a través del símbolo del sistema o configurando la variable de entorno.

Veamos cómo configurar CLASSPATH de la base de datos MySQL:

Paso 1: Haga clic en el botón de Windows y elija Panel de control. Seleccione Sistema.

Cómo configurar CLASSPATH en Java

Paso 2: Haga clic en Configuración avanzada del sistema .

Cómo configurar CLASSPATH en Java

Paso 3: Se abrirá un cuadro de diálogo. Haga clic en Variables de entorno.

sqrt java matemáticas
Cómo configurar CLASSPATH en Java

Etapa 4: Si CLASSPATH ya existe en Variables del sistema, haga clic en el botón Editar y luego coloque un punto y coma (;) al final. Pegue la ruta del archivo Java.jar del conector MySQL.

Si CLASSPATH no existe en las Variables del sistema, haga clic en el botón Nuevo y escriba el nombre de la variable como CLASSPATH y el valor de la variable como C:Archivos de programaJavajre1.8MySQL-Connector Java.jar;.;

Recuerda: Pon ;.; al final del CLASSPATH.

Cómo configurar CLASSPATH en Java

Diferencia entre RUTA y CLASSPATH

CAMINO RUTA DE CLASES
PATH es una variable de entorno. CLASSPATH también es una variable de entorno.
Lo utiliza el sistema operativo para buscar archivos ejecutables (.exe). Lo utiliza Application ClassLoader para localizar el archivo .class.
Debe incluir el directorio que contiene los archivos .exe. Debe incluir todos los directorios que contienen archivos .class y JAR.
La variable de entorno PATH, una vez configurada, no se puede anular. La variable de entorno CLASSPATH se puede anular utilizando la opción de línea de comando -cp o -CLASSPATH para los comandos javac y java.

Cómo configurar CLASSPATH en Windows usando el símbolo del sistema

Escriba el siguiente comando en su símbolo del sistema y presione Entrar.

 set CLASSPATH=%CLASSPATH%;C:Program FilesJavajre1.8
t.jar; 

En el comando anterior, The set es un comando interno de DOS que permite al usuario cambiar el valor de la variable. CLASSPATH es un nombre de variable. La variable encerrada entre el signo de porcentaje (%) es una variable de entorno existente. El punto y coma es un separador y después de (;) está la RUTA del archivo rt.jar.

pilas de java

Cómo funciona la carpeta ext en Java

El directorio ext funciona un poco como CLASSPATH. El directorio ext es parte del mecanismo de carga de clases. Las clases que están disponibles dentro de los JAR en el directorio ext están disponibles para las aplicaciones Java.

La siguiente tabla demuestra la diferencia clave entre CLASSPATH y el mecanismo de extensión:

Características RUTA DE CLASES Mecanismo de extensión
Orden de carga de clases CLASSPATH se carga después del arranque y la carga de la extensión. ext se carga después de la carga de arranque pero antes de la carga de CLASSPATH.
Alcance Es una aplicación específica. Todos los JRE en el host son la variable de entorno CLASSPATH. Todas las JVM se ejecutan en JRE java.ext.dirs específicos.
Nombre del paquete java.class.path se utiliza para buscar directorios y archivos JAR que contienen archivos de clase. java.ext.dirs se utiliza para especificar dónde el mecanismo de extensión carga las clases.
Especificación Se especifica por nombre, incluida la extensión.jar y el directorio que contiene los archivos .class. Se cargan todos los archivos JAR en los directorios especificados.

El mecanismo recogerá todos los archivos .jar del directorio de extensión incluso si el archivo no tiene la extensión .jar. La implementación de esto es que si se puede cambiar el nombre de un jar colocado en un directorio de classpath para que tenga una extensión distinta a .jar. El comodín (*) no lo selecciona. Esta técnica no funcionará con el directorio de extensiones.

Entendamos el proceso de ejecución a través de un ejemplo.

A.java

 public class A { public String toString() { return 'hello'; } } 

B.java

cadena a int java
 public class B { public static void main(final String[] args) { System.out.println(new A()); } } 

Compile el archivo A.java. Archivaremos el archivo A.class compilado en A.jar. Coloque este archivo JAR en otro directorio que no sea el archivo B.class compilado.

Para demostrar el uso del classpath, colocamos el archivo A.jar en un directorio C:JavaPrograms y accederemos a ese JAR mediante el comodín (*) para que B lo use.

Descubrimos que B aún puede cargar A.class mientras la habíamos eliminado del directorio actual. El iniciador de Java se buscó explícitamente en C:JavaProgram. También es posible tener la clase cargada sin su presencia en el mismo directorio y sin especificación explícita de classpath.

A menudo se hace referencia a esto como un beneficio de usar el mecanismo de extensión porque todas las aplicaciones que usan ese JRE pueden ver las mismas clases sin la necesidad de especificarlas explícitamente en el classpath.

¿Qué sucede si cambiamos el nombre de A.jar a A.backup en el mismo directorio al que hace referencia CLASSPATH? Se encuentra NoClassDefFoundError cuando hacemos lo mismo porque la referencia CLASSPATH no tiene la extensión .jar.