2012-02-17 94 views
8

我想了解classpath是如何工作的。各地的网络搜索后,这是我迄今达成:Java类路径 - Linux

我已经加入

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 /环境,我终于做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" 

谢谢您的时间。

+0

你如何删除类路径? – 2012-02-17 14:08:10

+0

你为什么要做所有的事情,你的环境是什么?/etc/environment用于为图形应用程序定义环境变量。如果你有图形,你可以使用IDE。为什么要把所有这些麻烦都包括在你的home文件夹+项目的classpath中? – hovanessyan 2012-02-17 14:09:01

+0

我只是试图永久设置CLASSPATH,以便从特定文件夹导入包,而无需在每次运行javac时定义它。 – tomatoeggs 2012-02-17 14:13:01

回答

5

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

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

这样你就可以获得它,任何新开始的bash都将立刻拥有设置。

+1

它工作得很好。现在一切似乎都很顺利。感谢您的帮助。 – tomatoeggs 2012-02-17 15:03:48

2

当您删除

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

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

+0

所以唯一的方法是重新启动我的系统,以便应用新的CLASSPATH? – tomatoeggs 2012-02-17 14:14:12

+0

您可以在您的'〜'directoy的'.bashrc'文件中放置'export CLASSPATH =“/ home/foo:/ home/foo/Java_code/my_code” '以在每次登录时设置变量。要取消设置CLASSPATH变量,请'unset CLASSPATH' – 2012-02-17 14:17:01

+0

谢谢Sapan。你的评论真的帮了我。现在一切都很顺利。 – tomatoeggs 2012-02-17 15:05:01

1

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

参见:Ubuntu environment variables

/etc/environment - 该文件特别是指全系统环境变量设置。 它不是脚本文件,而是由赋值表达式组成,每行一个。具体而言,该文件存储系统范围的区域设置和路径设置。

+0

谢谢Jesper。你的信息真的很有价值。 – tomatoeggs 2012-02-17 15:05:43

4
export CLASSPATH="" 

或更好

unset CLASSPATH 

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