修改所有用户的 javahome(慎用)
1.以root权限打开/etc/profile文件,找到类似于下面的这一行:
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC
2.在其上插入以下内容:
Java Home=/home/loocao/software/java/jdk1.6.0_13 JRE_HOME=$Java Home/jre CLASSPATH=.:$Java Home/lib:$JRE_HOME/lib:$CLASSPATH PATH=$Java Home/bin:$JRE_HOME/bin:$PATH
3.然后编辑export语句,在最后加上Java Home,如下:
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC Java Home CLASSPATH
4.配置完成,下面就执行java -version命令测试吧。
注意:需要重启计算机方可生效。
通过这种方法配置的变量对所有本地用户均有效,不同用户无须重复设置。
修改当前用户的 javahome
1.在当前目录的根目录下 使用命令 ls -a (显示所有隐藏文件)
2. 找到文件 .bash_profile (或.bashrc)
3. 按照上面的方式添加 Java_home,例如:
PATH=$PATH:$HOME/bin
export PATH
JAVA_HOME=/usr/java/jdk1.6.0_21
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
CLASSPATH=./$CLASSPATH:$CLASSPATH:$JAVA_HOME/jre/lib/dt.jar:$JAVA_HOME/jre/lib/tools.jar
export CLASSPATH
===============================
方法一:在/etc/profile文件末尾添加
bash shell 下(若在csh下,好像应为 set JAVA_HOME=/usr/local/jdk1.6.0_11)
JAVA_HOME=/usr/local/jdk1.6.0_11
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME PATH CLASSPATH
注销重新登陆,终端运行javac,若无报错信息,则说明设置生效。
不注销执行脚本命令 source /etc/profile,此命令是检查刚刚配置的profile文件是否生效,如果没有出错,则表示成功。
注意不要把$PATH放在 $JAVA_HOME/bin前面了,否则,先前安装的旧版本jdk会覆盖现在安装的jdk。
debian 的java package的policy规定,任何包都不能依赖系统环境变量,也就是不能依赖CLASSPATH,所以从apt得到的包是
不会有需要你自己设CLASSPATH的问题的。
在网上见一朋友,写的比我详细,特摘下面:
转自: http://www.leninlee.cn/?p=320
无论在Windows还是Linux下,环境变量都很重要,它直接决定了程序和命令的执行的效果。例如,Java的虚拟机和其编译器不同,javac(Java的编译器)在默认的情况下支持在当前目录寻找源码文件;但是java(Java虚拟机)完全依赖环境变量,除非你在环境变量中设置其寻找类的路径,否则即使你运行当前目录下的类,它也找不到,会报如下的错误:
Exception in thread “main” java.lang.NoClassDefFoundError: YourClassName
这一点是很绕人的,大家都习惯了用一条命令执行当前目录下的文件,但是如果你不设置环境变量,那么java命令真就成了睁眼瞎了。
环境变量中有三个和Java关系密切,即”JAVA_HOME“、”CLASSPATH“和”PATH“,第一个是指定Java的安装目录,第二个是指定Java虚拟机在寻找类的时候的路径,第三个指定直接输入程序的名字时到哪里去找这个程序。
Linux下使用”export“命令设定环境变量:
export JAVA_HOME=/usr/lib/jvm/java-6-sun
export CLASSPATH=.:$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH
和Windows不同,Linux下的环境变量以”:“分割,上面命令中的”.“就表示当前目录,只有设定了它才能使java找到当前目录下的类。另外java在运行程序的时候还要寻找Java自己携带的类,所以后面还要加上Java安装目录下的lib目录的路径。
在Windows下,如果要在原有环境变量的基础上,为某一项变量添加一个值,要使用如下命令:
set classpath+=新变量
和Windows中不同,Linux下一般使用如下命令添加变量值:
export CLASSPATH=新变量值:$CLASSPATH
”$CLASSPATH”表示现有的CLASSPATH的值,当然,也可以使用和Windows下相似的命令格式:
export CLASSPATH+=新变量值
之所以一般不这样做,是因为Linux下的这条命令是在现有的环境变量的后面添加”=“号后面的字符,而Windows下是在现有的变量之前添加,并自动加上分割变量值的逗号。通常Linux下最后一个变量值的后面都没有添加分割变量值的”:“,所以如果直接按上面那条命令添加变量值,将会出问题,用echo命令查看当前变量值:
echo $CLASSPATH
.:/usr/lib/jvm/java-6-sun/lib新变量值
显然,新添加的变量值和原有的变量值之间没有加冒号,所以正确的做法是:
export CLASSPATH+=:新变量值
说了半天,其实都是些没用的话,因为上面的export命令只针对当前终端,一旦你关闭终端,上面所做的所有设置都不存在了。Linux的环境变量其实存储在”/etc/environment“这个文件里面,你完全可以修改这个文件来达到设置环境变量的目的,不过这个文件是在系统启动的时候才载入的,不知道有没有什么命令可以在不重新启动系统的情况下使对该文件新做的修改生效,依目前的情况看是可能不大。不过有个文件是在终端每次启动的时候都要读取的,那就是bashrc文件,如果希望修改应用于系统级,那就修改”/etc/bashrc“文件,这当然要求root权限,如果只希望修改应用于当前用户,那就修改”~/.bashrc“文件,只需将上面的export命令加入其中即可。
当然,你完全可以不设置环境变量,而使用如下格式的命令编译源码和执行class文件:
/usr/lib/jvm/java-6-sun/bin/javac MyApplication.java
/usr/lib/jvm/java-6-sun/bin/java -classpath=~/workspace MyApplication