una - programa de calificaciones en java
OpciĆ³n de ruta de clase de Java (4)
¿El uso de la opción -classpath
con java
, agregará o reemplazará el contenido de la variable de -classpath
CLASSPATH
?
El uso de la opción -cp no afectará la variable de entorno CLASSPATH.
Puedes probar este pequeño fragmento de código para verificar esto:
public class CPTest {
public static void main (final String[] args) {
String cp = System.getenv("CLASSPATH");
System.out.println(cp);
}
}
%echo $CLASSPATH
/home/test/:.
La salida sin opción -cp:
%java CPTest
/home/test/:.
La salida con opción -cp:
%java -cp /home/xanadu:. CPTest
/home/test/:.
La salida es la misma para ambas invocaciones (una con -cp y otra sin).
También la ruta especificada en la variable de entorno CLASSPATH es
utilizado o se utiliza la ruta especificada con la opción -cp . No es una mezcla de ambos, es uno de ellos.
Esto es evidente a partir de la siguiente invocación. Si el CWD (directorio de trabajo actual "." )
se excluye de la opción -cp, el lanzador JVM (es decir, java) no puede encontrar el
archivo de clase a pesar de la variable de entorno CLASSPATH que contiene CWD ( "." ) en él.
%java -cp /home/test CPTest
Exception in thread "main" java.lang.NoClassDefFoundError: CPTest
Sí. Citado de la página del manual de java(1)
:
-classpath classpath
-cp classpath
Specifies a list of directories, JAR archives, and ZIP archives to search for class files. Class
path entries are separated by colons (:). Specifying -classpath or -cp overrides any setting of the
CLASSPATH environment variable.
If -classpath and -cp are not used and CLASSPATH is not set, the user class path consists of the cur-
rent directory (.).
Se usa cualquiera de las opciones, no ambas.
La especificación de -classpath o -cp anula cualquier configuración de la variable de entorno CLASSPATH.
...
Se prefiere la opción -classpath porque puede configurarlo individualmente para cada aplicación sin afectar a otras aplicaciones y sin que otras aplicaciones modifiquen su valor.
...
La configuración de la variable CLASSPATH o el uso de la opción de línea de comandos -classpath anula ese valor predeterminado, por lo que si desea incluir el directorio actual en la ruta de búsqueda, debe incluir "." en la nueva configuración.
Usando la variable classpath, reemplaza la variable CLASSPATH de Environment, pero solo para esa sesión. Si reinicia la aplicación, debe configurar nuevamente la variable classpath.