Classpath


Supplying as application argumentEdit

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

  • HelloWorld (clase principal)
  • SupportClass
  • UtilClass

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.mi paquete.HelloWorld., Sin embargo, también debemos decirle a Java dónde buscar los archivos y directorios que definen nuestro paquete.,o para iniciar el programa, utilizamos el siguiente comando:

Microsoft Windows Linux
 java -classpath D:\myprogram org.mypackage.HelloWorld
 java -cp /home/user/myprogram org.mypackage.HelloWorld 

donde:

  • java es el Java Runtime launcher, un tipo de herramienta SDK (una herramienta de línea de comandos, como javac, javadoc o apt)
  • -classpath D:\myprogram establece la ruta a los paquetes usados en el programa (en Linux, -cp /home/user/myprogram) y
  • org.,mi paquete.HelloWorld es el nombre de la clase principal

estableciendo la ruta a través de un entorno variableEdit

la variable de entorno llamada CLASSPATH puede usarse alternativamente para establecer la ruta de clase. Para el ejemplo anterior, también podríamos usar en Windows:

set CLASSPATH=D:\myprogramjava org.mypackage.HelloWorld

la regla es que -classpathla opción, cuando se usa para iniciar la aplicación java, anula la variable de entorno CLASSPATH. Si no se especifica ninguno, El Directorio de trabajo actual se utiliza como classpath., Esto significa que cuando nuestro directorio de trabajo es D:\myprogram\(en Linux, /home/user/myprogram/), no necesitaríamos especificar el classpath explícitamente. Sin embargo, al sobrescribir, se recomienda incluir la carpeta actual "." en la ruta de clase en el caso de que se desee cargar clases desde la carpeta actual.

lo mismo se aplica no solo a java launcher sino también a javac, el compilador de java.

establecer la ruta de un archivo Jaredit

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

D:\myprogram\ | ---> lib\ | ---> supportLib.jar | ---> org\ | --> mypackage\ | ---> HelloWorld.class ---> SupportClass.class ---> UtilClass.class

se necesita la siguiente opción de línea de comandos:

java -classpath D:\myprogram;D:\myprogram\lib\supportLib.jar org.mypackage.HelloWorld

o alternativamente:

set CLASSPATH=D:\myprogram;D:\myprogram\lib\supportLib.jarjava org.mypackage.HelloWorld

agregar todos los archivos JAR en un directoryEdit

en Java 6 y versiones posteriores, se pueden añadir todos los archivos jar de un directorio específico al classpath usando la notación comodín.,

Windows ejemplo:

java -classpath ".;c:\mylib\*" MyApp

Linux ejemplo:

java -classpath '.:/mylib/*' MyApp

Esto funciona tanto para el -classpath opciones y medio ambiente de rutas de clases.

establecer la ruta en un archivo de manifestoeditar

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

D:\myprogram\ | ---> helloWorld.jar | ---> lib\ | ---> supportLib.jar

el archivo de manifiesto definido en helloWorld.,frasco tiene esta definición:

Main-Class: org.mypackage.HelloWorldClass-Path: lib/supportLib.jar

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

El programa se inicia con el siguiente comando:

java -jar D:\myprogram\helloWorld.jar 

Este se inicia automáticamente org.mi paquete.HelloWorld especificado en la clase Main-Class con los argumentos. El Usuario no puede reemplazar este nombre de clase usando la invocación java-jar. Class-Path describe la ubicación de supportLib.jar relativo a la ubicación de la biblioteca helloWorld.frasco., No se admiten ni la ruta absoluta del archivo, que está permitida en el parámetro -classpath en la línea de comandos, ni las rutas jar-internal. Esto significa que si el archivo de clase principal está contenido en un jar, org / mypackage / HelloWorld.la clase debe ser una ruta válida en la raíz dentro del jar.

varias entradas de classpath están separadas por espacios:

Class-Path: lib/supportLib.jar lib/supportLib2.jar

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *