stringtranslate.com

Ruta de clases

Classpath es un parámetro de la máquina virtual Java o del compilador Java que especifica la ubicación de las clases y los paquetes definidos por el usuario . El parámetro se puede configurar en la línea de comandos o mediante una variable de entorno .

Descripción general y arquitectura

De manera similar al comportamiento clásico de carga dinámica , al ejecutar programas Java , la máquina virtual Java busca y carga las clases de manera diferida (carga el código de bytes de una clase solo cuando la clase se utiliza por primera vez). La ruta de clases le indica a Java dónde buscar en el sistema de archivos los archivos que definen estas clases.

La máquina virtual busca y carga clases en este orden:

  1. clases bootstrap: las clases que son fundamentales para la plataforma Java (que comprenden las clases públicas de la biblioteca de clases Java y las clases privadas que son necesarias para que esta biblioteca sea funcional).
  2. clases de extensión: paquetes que están en el directorio de extensión de Java Runtime Environment o JDK ,jre/lib/ext/
  3. paquetes y bibliotecas definidos por el usuario

De forma predeterminada, solo se puede acceder a los paquetes de la API estándar del JDK y a los paquetes de extensión sin necesidad de especificar dónde encontrarlos. La ruta de todos los paquetes y bibliotecas definidos por el usuario debe establecerse en la línea de comandos (o en el manifiesto asociado con el archivo Jar que contiene las clases).

Establecer la ruta para ejecutar programas Java

Suministro como argumento de aplicación

Supongamos que tenemos un paquete llamado org.mypackage que contiene las clases:

y los archivos que definen este paquete se almacenan físicamente en el directorio D:\myprogram (en Windows ) o /home/user/myprogram (en Linux ).

La estructura del archivo se ve así:

Cuando invocamos Java, especificamos el nombre de la aplicación a ejecutar: org.mypackage.HelloWorld. Sin embargo, también debemos indicarle a Java dónde buscar los archivos y directorios que definen nuestro paquete. Por lo tanto, para iniciar el programa, usamos el siguiente comando:

dónde:

Establecer la ruta a través de una variable de entorno

La variable de entorno nombrada CLASSPATHtambién se puede utilizar para establecer la ruta de clase. Para el ejemplo anterior, también podríamos utilizar en Windows:

D:\miprograma> set  CLASSPATH = D:\miprograma D:\miprograma> java org.mipaquete.HolaMundo

La regla es que -classpathla opción, cuando se utiliza para iniciar la aplicación Java, anula la CLASSPATHvariable de entorno. Si no se especifica ninguna, se utiliza el directorio de trabajo actualD:\myprogram\ como ruta de clases. Esto significa que cuando nuestro directorio de trabajo es (en Linux, /home/user/myprogram/), no necesitaríamos especificar la ruta de clases explícitamente. Sin embargo, al anular, se recomienda incluir la carpeta actual "."en la ruta de clases en caso de que se desee cargar clases desde la carpeta actual.

Lo mismo se aplica no sólo al lanzador de Java sino también a javac , el compilador de Java.

Establecer la ruta de un archivo Jar

Si un programa utiliza una biblioteca de soporte incluida en un archivo Jar llamado supportLib.jar , ubicado físicamente en el directorio D:\myprogram\lib\ y la estructura de archivo física correspondiente es:

D:\miprograma\ | ---> biblioteca | ---> soporteLib.jar | ---> org\ | ---> mipaquete\ | ---> HolaMundo.clase ---> Clase de soporte.clase ---> UtilClass.clase

Se necesita la siguiente opción de línea de comando :

java -classpath D:\miprograma;D:\miprograma\lib\supportLib.jar org.mipaquete.HolaMundo

o alternativamente:

D:\miprograma> set  CLASSPATH = D:\miprograma;D:\miprograma\lib\supportLib.jar D:\miprograma> java org.mipaquete.HolaMundo

Agregar todos los archivos JAR en un directorio

En Java 6 y versiones superiores, se pueden agregar todos los archivos jar en un directorio específico al classpath usando notación comodín.

Ejemplo de Windows:

D:\miprograma> java -classpath ".;c:\milib\*" MiAplicación

Ejemplo de Linux:

$ java  -classpath '.:/mylib/*' MiAplicación  

Esto funciona tanto para -classpathopciones como para rutas de clases de entorno.

Establecer la ruta en un archivo de manifiesto

Si un programa ha sido incluido en un archivo Jar llamado helloWorld.jar , ubicado directamente en el directorio D:\myprogram , la estructura del directorio es la siguiente:

D:\miprograma\ | ---> holaMundo.jar | ---> biblioteca  | ---> soporteLib.jar

El archivo de manifiesto definido en helloWorld.jar tiene esta definición:

Clase principal : org.mypackage.HelloWorld Ruta de clase : lib/supportLib.jar  

El archivo de manifiesto debe terminar con una nueva línea o un retorno de carro.

El programa se inicia con el siguiente comando:

java -jar D:\myprogram\helloWorld.jar [argumentos de la aplicación]

Esto inicia automáticamente org.mypackage.HelloWorld especificado en la clase Main-Class con los argumentos. El usuario no puede reemplazar este nombre de clase mediante la invocación java -jar. Class-Path describe la ubicación de supportLib.jar en relación con la ubicación de la biblioteca helloWorld.jar . No se admiten rutas de archivo absolutas, que se permiten en -classpathel parámetro de la línea de comandos, ni rutas internas de jar. Esto significa que si el archivo de clase principal está contenido en un jar, org/mypackage/HelloWorld.class debe ser una ruta válida en la raíz dentro del jar.

Las entradas de ruta de clase múltiples se separan con espacios:

Ruta de clase : lib/supportLib.jar lib/supportLib2.jar 

Notas específicas del sistema operativo

Al estar estrechamente asociada con el sistema de archivos, la sintaxis de Classpath de la línea de comandos depende del sistema operativo. [1] Por ejemplo:

Esto no se aplica cuando Classpath se define en archivos de manifiesto , donde cada ruta de archivo debe estar separada por un espacio (" "), independientemente del sistema operativo.

Véase también

Referencias

  1. ^ "The Classpath" (El camino de clases) . Consultado el 26 de junio de 2016 .

Enlaces externos