Java classpath - Linux - PullRequest
       25

Java classpath - Linux

10 голосов
/ 17 февраля 2012

Я пытаюсь понять, как на самом деле работает classpath. После поиска по сети я достиг этого:

Я добавил

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

на /etc/environment. Кстати, я использую Ubuntu.

Java находит путь и без проблем компилируется.

Проблема в том, что если я изменяю CLASSPATH, а затем делаю: source /etc/environment, новый CLASSPATH не применяется. Он применяется тогда и только тогда, когда я перезагружаю систему. Например, если я удалю

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

, затем я делаю source / etc / environment и, наконец, echo $CLASSPATH, получаю /home/foo:/home/foo/Java_code/my_code. Я думаю, что я должен получить пустую строку, не так ли?

Есть ли способ применить изменения в переменных PATH или CLASSPATH немедленно, без перезагрузки системы?

Это может помочь вам узнать, что файл / etc / environment изначально содержал только следующую строку:

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

Спасибо за ваше время.

Ответы [ 4 ]

6 голосов
/ 17 февраля 2012

Я думаю, что вы не должны помещать любые пути, которые являются локальными для вашего домашнего каталога, в общесистемный файл.Я бы оставил /etc/environment в покое, если вы не предоставите некоторые изменения, которые необходимы или полезны для всех пользователей.Внесите любые изменения в CLASSPATH в вашем .bashrc в вашем домашнем каталоге.

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

Таким образом, вы можете получить исходный код, и у любого недавно запущенного bash настройки будут сразу установлены.

5 голосов
/ 17 февраля 2012
 export CLASSPATH=""

или лучше

 unset CLASSPATH

удалит существующий путь к классам. Существует несколько мест, где вы можете установить или сбросить путь к классам - отсутствующая запись не удалит его.

3 голосов
/ 17 февраля 2012

при удалении

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

line и затем source ... не удалит CLASSPATH, потому что он уже установлен. Он не очищает переменные, которые уже были определены.

2 голосов
/ 17 февраля 2012

Файл /etc/environment не является обычным сценарием оболочки;он не выполняется как сценарий оболочки при загрузке или входе в систему.Поэтому запуск его с source /etc/environment не такой, как при обычной загрузке вашей системы.

См .: Переменные окружения Ubuntu

/etc/environment - ЭтоЭтот файл специально предназначен для общесистемных настроек переменных среды. Это не файл сценария , а скорее состоит из выражений присваивания, по одному на строку.В частности, в этом файле хранятся общесистемные настройки языка и пути.

...