Linux JDK 段错误 环境变量的问题


linux新安装了jdk1.6,输入 javac HelloWorld.java出现“段错误”环境变量是这样设定的:

JAVA_HOME=/usr/java/jdk1.6.0_13

PATH=$PATH:$JAVA_HOME/bin

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export JAVA_HOME PATH CLASSPATH

在虚拟机中这样是没有错误的,但是在真实系统上就不行了。

首先确定jdk的javac在PATH目录下,也就是:/usr/java/jdk1.6.0_13/bin/javac

[root@localhost tmp]# /usr/java/jdk1.6.0_13/bin/javac HelloWorld.java

编译通过

[root@localhost tmp]# java HelloWorld

HelloWorld!

出现结果

这就说明按照设置的$PATH,并没有找到jdk的javac。

[root@localhost /tmp]$ echo $PATH

/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:/usr/java/jdk1.6.0_13/bin

可以看到JDK的PATH在最后面。

[root@localhost tmp]$ which javac (在环境变量$PATH设置的目录里查找符合条件的文件。)

你可以看到有一串的javac文件,除了一个是jdk的,其余都是系统自带的。

因此把上面的PATH=$PATH:$JAVA_HOME/bin改

PATH=$JAVA_HOME/bin:$PATH就可以了。

注:PATH=$PATH:$JAVA_HOME/bin 意思是PATH先从系统的PATH变量找,再找jdk的。

PATH=$JAVA_HOME/bin:$PATH 是从jdk先找,再找系统的。

还有个最根本的问题:为什么在虚拟机上完全安装linux没有出现这个问题,而在真实机器上安装就有这个问题呢?

相关内容