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没有出现这个问题,而在真实机器上安装就有这个问题呢?