2012-02-17 15 views
8

Estoy tratando de entender cómo funciona classpath realmente. Después de buscar en la web aquí es donde he llegado hasta ahora:Java classpath - Linux

He añadido

export CLASSPATH="/home/foo:/home/foo/Java_code/my_code" 

en /etc/environment. Por cierto, estoy ejecutando Ubuntu.

Java encuentra la ruta y compila sin problemas.

El problema es que si cambio el CLASSPATH y luego lo hago: source /etc/environment, no se aplica el nuevo CLASSPATH. Se aplica si y solo si reinicio el sistema. Por ejemplo si elimino la línea

export CLASSPATH="/home/foo:/home/foo/Java_code/my_code" 

, entonces lo hago source/etc/medio ambiente y por último que hago echo $CLASSPATH, lo que consigo es /home/foo:/home/foo/Java_code/my_code. Creo que debería tener una línea vacía, ¿no?

¿Hay alguna forma de aplicar los cambios en las variables PATH o CLASSPATH inmediatamente sin tener que reiniciar el sistema?

Podría ayudar a saber que el archivo/etc/environment originalmente contenía solamente la siguiente línea:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" 

Gracias por su tiempo.

+0

¿Cómo está borrando la ruta de clases? –

+0

¿por qué haces todas esas cosas, cuál es tu entorno?/etc/environment se usa para definir variables de entorno para aplicaciones gráficas. Si tiene gráficos, puede usar IDE. ¿Por qué resolver este problema al incluir su carpeta de inicio + proyectos en classpath? – hovanessyan

+0

Solo intento establecer CLASSPATH permanentemente para importar paquetes de carpetas específicas sin tener que definirlo cada vez que ejecuto javac. – tomatoeggs

Respuesta

5

Creo que no debería poner ninguna ruta que un local a su directorio de inicio en un archivo de todo el sistema. Dejaría el /etc/environment solo, a menos que proporcione algunos cambios, que sean necesarios o beneficiosos para todos los usuarios. Ponga cualquier cambio en CLASSPATH en su .bashrc en su directorio personal.

CLASSPATH=$CLASSPATH:/home/foo:/home/foo/Java_code/my_code 
    export CLASSPATH 

De esta manera usted puede fuente y cualquier nuevo bash tendrá la configuración a la vez.

+1

Funcionó bien. Ahora todo parece ser suave. Gracias por tu ayuda. – tomatoeggs

2

Cuando se quita la línea

export CLASSPATH="/home/foo:/home/foo/Java_code/my_code" 

y luego source ... que no eliminaría el CLASSPATH debido a que ya se ha establecido. No borra las variables que ya se han definido.

+0

Entonces, ¿la única forma es reiniciar mi sistema para que se aplique el nuevo CLASSPATH? – tomatoeggs

+0

Puede poner 'export CLASSPATH ="/home/foo:/home/foo/Java_code/my_code " ' en su archivo '.bashrc' en su' ~ 'directoy para configurar las variables cada vez que inicie sesión. Para desarmar la variable CLASSPATH, haga 'unset CLASSPATH' –

+0

Gracias Sapan. Tus comentarios realmente me ayudaron. Todo esta bien ahora – tomatoeggs

1

El archivo /etc/environment no es un script de shell normal; no se ejecuta como un script de shell cuando inicia o inicia sesión en su sistema. Entonces ejecutarlo con source /etc/environment no es lo mismo que cuando normalmente arranca su sistema.

Ver: Ubuntu environment variables

/etc/environment - Este archivo está destinado específicamente para la configuración de variables de entorno de todo el sistema. No es un archivo de script, sino que consiste en expresiones de asignación, una por línea. Específicamente, este archivo almacena la configuración regional y de ruta de todo el sistema.

+0

Gracias Jesper. Tu información es realmente valiosa – tomatoeggs

4
export CLASSPATH="" 

o mejor

unset CLASSPATH 

será eliminar una ruta de clases existente. Hay varias ubicaciones donde puede establecer o deshacer la ruta de acceso de clase; una entrada faltante no la desactivará.

Cuestiones relacionadas