Programación en java

Solo disponible en BuenasTareas
  • Páginas : 7 (1586 palabras )
  • Descarga(s) : 0
  • Publicado : 26 de septiembre de 2010
Leer documento completo
Vista previa del texto
CLASSPATH
Vamos a suponer que tenemos un programa java compuesto por varias clases. En ninguna parte de nuestras clases hemos puesto package y lo tenemos todo compilado en un mismo directorio, por ejemplo /users/chuidiang/MI_PROYECTO  ( o C:\users\chuidiang\MI_PROYECTO en windows). Supongamos además que nuestro método main() está en el fichero ClasePrincipal.class.
Si estamos en esedirectorio y ejecutamos nuestro programa java, escribimos algo así como
$ java ClasePrincipal
El comando java busca las clases que necesita en unos determinados directorios y ficheros .jar. Por defecto los buscará en los .jar propios de java y en el directorio en el que se esté ejecutando el comando java. Esto es cierto en la versión de java 1.4 y superiores. Para versiones anteriores es posible que nose busquen las clases en el directorio actual.
Si estamos en el directorio indicado, tenemos una versión de java moderna y repito, no hemos puesto package por ningún lado, todo esto funcionará correctamente.
 
¿Qué pasa si estamos en otro directorio?
Si estamos en otro directorio que no es el que contiene los ficheros .class de nuestro programa, o si estamos en el mismo directorio peronuestra versión de java es antigua, entonces el comando java no los encontrará. Nuestros .class no están en los directorios en los que java busca por defecto.
Para que java los encuentre, tenemos dos opciones:
* Definir la variable de entorno CLASSPATH. Dándole a esta variable los directorio donde java debe buscar clases, todo irá de maravilla. Insisto, no hemos puesto package por ningún lado.En linux sería algo así como
CLASSPATH=/users/chuidiang/MI_PROYECTO; export CLASSPATH
java ClasePrincipal
En windows
set CLASSPATH=C:\users\chuidiang\MI_PROYECTO
javaClasePrincipal
* Ejecutar java con la opción -cp (o -classpath), en la que se indica el directorio en el que están las clases.
En linux
java -cp /users/chuidiang/MI_PROYECTO   ClasePrincipal
En windows
java -cpC:\users\chuidiang\MI_PROYECTO   ClasePrincipal
¿Qué pasa si tengo mis clases repartidas en varios directorio?
Si nuestros ficheros .class están en varios directorios, el asunto es fácil. Basta poner todos los directorios seguidos con el separador adecuado (según el sistema operativo). Si los directorios son MI_PROYECTO/CLASES_1 y MI_PROYECTO/CLASES_2, sería
* Para linux, usando comoseparador el "dos puntos" ":"
CLASSPATH=/users/chuidiang/MI_PROYECTO/CLASES_1:/users/chuidiang/MI_PROYECTO/CLASES_2
export CLASSPATH
java ClasePrincipal
o bien
java -cp /users/chuidiang/MI_PROYECTO/CLASES_1:/users/chuidiang/MI_PROYECTO/CLASES_2 ClasePrincipal
* Para windows, usando como separador el "punto y coma" ";" (El "dos puntos" se usa para poner después de la unidad de disco, porejemplo, "C:" )
set CLASSPATH=C:\users\chuidiang\MI_PROYECTO\CLASES_1;C:\users\chuidiang\MI_PROYECTO/CLASES_2
java ClasePrincipal
o bien
java -cp C:\users\chuidiang\MI_PROYECTO\CLASES_1;C:\users\chuidiang\MI_PROYECTO/CLASES_2 ClasePrincipal
Aquí es donde podemos empezar a tener problemas si no nos conocemos bien los trucos de todo esto. Hay dos detalles que debemos tener en cuenta:
* Laopción -cp anula a la variable de entorno CLASSPATH. Es decir, si ejecutamos java con -cp, se ignora el contenido de CLASSPATH. Por ello, no podemos poner unos directorios en CLASSPATH y otros en -cp. Es incorrecto, por ejemplo
CLASSPATH=/users/chuidiang/MI_PROYECTO/CLASES_1; export CLASSPATH
java -cp /users/chuidiang/MI_PROYECTO/CLASES_2 ClasePrincipal
Debemos poner todos los directoriosimplicados en sólo una de las dos opciones, o en CLASSPATH, o en -cp.
* Sólo se admite una opción -cp. Si ponemos varias, sólo se hará caso a una de ellas. Sería incorrecto, por ejemplo
java -cp /users/chuidiang/MI_PROYECTO/CLASES_1 -cp /users/chuidiang/MI_PROYECTO/CLASES_2 ClasePrincipal
Esto sólo encontraría las clases de uno de los directorios. Debemos poner todos los directorios en una...
tracking img