pieza buscando las clases estándar de Java que se incluyen con el JDK. Después busca los 

paquetes opcionales

Java cuenta con un 

mecanismo de extensión

que permite agregar paquetes nuevos (opcionales), para fi nes de 

desarrollo y ejecución. [

Nota: el mecanismo de extensión está más allá del alcance de este libro. Para obtener 

más información, visite 

java.sun.com/javase/6/docs/technotes/guides/extensions/

]. Si la clase no se 

encuentra en las clases estándar de Java o en las clases de extensión, el cargador de clases busca en la 

ruta de clases

que contiene una lista de ubicaciones en la que se almacenan las clases. La ruta de clases consiste en una lista de 
directorios o 

archivos de fi cheros

, cada uno separado por un 

separador de directorio

: un signo de punto y coma 

(

;

) en Windows o un signo de dos puntos (

:

) en UNIX/Linux/Mac OS X. Los archivos de fi cheros son archivos 

individuales que contienen directorios de otros archivos, generalmente en formato comprimido. Por ejemplo, las 
clases estándar de Java que usted utiliza en sus programas están contenidas en el archivo de fi cheros 

rt.jar

, el 

cual se instala junto con el JDK. Los archivos de fi cheros generalmente terminan con la extensión 

.jar

 o

 .zip

Los directorios y archivos de fi cheros que se especifi can en la ruta de clases contienen las clases que usted desea 
poner a disponibilidad del compilador y la máquina virtual de Java.

De manera predeterminada, la ruta de clases consiste sólo del directorio actual. Sin embargo, la ruta de clases 

puede modifi carse de la siguiente manera:

 1. 

proporcionando la opción 

–classpath

 al compilador 

javac

 o

 2. 

estableciendo la variable de entorno 

CLASSPATH

 (una variable especial que usted defi ne y el sistema ope-

rativo mantiene, de manera que las aplicaciones puedan buscar clases en las ubicaciones especifi cadas).

Para obtener más información sobre la ruta de clases, visite la página 

java.sun.com/javase/6/docs/techno-

tes/tools/index.html

. La sección titulada “General Information” (información general) contiene información 

acerca de cómo establecer la ruta de clases para UNIX/Linux y Windows.

Error común de programación 8.13

Al especifi car una ruta de clases explícita se elimina el directorio actual de la ruta de clases. Esto evita que las clases 
en el directorio actual (incluyendo los paquetes en ese directorio) se carguen correctamente. Si deben cargarse 
clases del directorio actual, un punto (

.

) en la ruta de clases para especifi car el directorio actual.

Observación de ingeniería de software 8.16

En general, es una mejor práctica utilizar la opción 

classpath

 del compilador, en vez de usar la variable 

de entorno 

CLASSPATH

 para especifi car la ruta de clases para un programa. De esta manera, cada aplicación 

puede tener su propia ruta de clases.

Tip para prevenir errores 8.3

Al especifi car la ruta de clases con la variable de entorno 

CLASSPATH

 se pueden producir errores sutiles y difíciles de 

localizar en los programas que utilicen versiones distintas del mismo paquete.

Para el ejemplo de las fi guras 8.18 y 8.19, no especifi camos una ruta de clases explícita. Por lo tanto, para 

localizar las clases en el paquete 

com.deitel.jhtp7.cap08

 de este ejemplo, el cargador de clases busca en el 

directorio actual el primer nombre en el paquete: 

com

. A continuación, el cargador de clases navega por la estruc-

tura de directorios. El directorio 

com

 contiene al subdirectorio 

deitel

; éste contiene al subdirectorio 

jhtp7

Finalmente, el directorio 

jhtp7

 contiene al subdirectorio 

cap08

. En este subdirectorio se encuentra el archivo 

Tiempo1.class

, que se carga mediante el cargador de clases para asegurar que la clase se utilice apropiadamente 

en nuestro programa.

Especifi car la ruta de clases al ejecutar una aplicación

Al ejecutar una aplicación, la JVM debe poder localizar las clases que se utilizan en esa aplicación. Al igual que el 
compilador, el comando 

java

 utiliza un cargador de clases que busca primero en las clases estándar y de exten-

sión, y después busca en la ruta de clases (el directorio actual, de manera predeterminada). La ruta de clases para 
la JVM puede especifi carse en forma explícita, utilizando cualquiera de las técnicas descritas para el compilador. 
Al igual que con el compilador, es mejor especifi car a la JVM una ruta de clases individual para cada programa, 
mediante las opciones de la línea de comandos. Usted puede especifi car la ruta de clases en el comando 

java

 

8.16 Ejemplo práctico de la clase 

Tiempo

: creación de paquetes 

359

08_MAQ_CAP_08.indd359

4/19/081:23:58AM