Java类路径 - Linux

时间:2012-02-17 14:04:52

标签: java linux ubuntu classpath

我试图理解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"

行,然后我做源/ 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 个答案:

答案 0 :(得分:6)

我认为你不应该在系统范围的文件中放置主目录的本地路径。除非您提供一些对所有用户都有必要或有益的更改,否则我会单独留下/etc/environment。 将任何更改添加到主目录中的.bashrc中的CLASSPATH。

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

通过这种方式,您可以获取它,任何新启动的bash都可以立即进行设置。

答案 1 :(得分:5)

 export CLASSPATH=""

或更好

 unset CLASSPATH

将删除现有的Classpath。有多个位置可以设置或取消设置类路径 - 缺少的条目不会取消设置。

答案 2 :(得分:3)

删除时

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

行然后source ...它不会删除CLASSPATH,因为它已经设置好了。它不清楚已经定义的变量。

答案 3 :(得分:2)

/etc/environment文件不是普通的shell脚本;启动或登录系统时,它不会作为shell脚本执行。因此,使用source /etc/environment运行它与正常启动系统时不一样。

请参阅:Ubuntu environment variables

  

/etc/environment - 此文件专门用于系统范围的环境变量设置。 它不是脚本文件,而是由赋值表达式组成,每行一个。具体来说,此文件存储系统范围的区域设置和路径设置。