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沒有出現這個問題,而在真實機器上安裝就有這個問題呢?