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