我的Ubuntu下安装了OpenJDK和Oracle的JDK,然后我在用户自己的配置文件(~./profile)中设置JAVA_HOME(24到28行)。
然后,我在命令行中执行java -version和javac -version发现其版本号不一样。我用which命令判断其java和javc的命令,发现javac其实是/usr/bin/javac下的,再用file查看其属性,发现是/etc/alternatives/javac的一个符号链接。于是,我想起了网上很多使用sudo update-alternatives命令设置默认JDK的方法,其实,该方法的实质就是将你自己安装的JDK中java,javac等命令复制到/etc/alternatives下,这样你执行这些java命令的时候,系统会先在/usr/bin下面去找,/usr/bin下面的java是一个到/etc/alternatives/java的链接,而/etc/alternatives/java是你安装的JDK中的java,所以这样实质上执行的就是你安装的JDK。
弄清楚了原理,解决方案也很简单。直接把/usr/bin下的这些JDK相关的符号链接全部删除(我这里没有删除,而是将其重命名为*.bak)。这样你在命令行输入java的时候,系统在/usr/bin下面找不到,就通过你的用户配置文件,找到你JAVA_HOME里面配置的JDK路径,执行里面的java。
重命名这些符号链接以后,重启电脑(是不是一样了)。
我这里是因为不同的用户需要使用不同的JDK,如果希望所有用户都使用相同的版本的,可以使用sudo update-alternatives这样的命令去设置。
Ubuntu14.04(Linux)中Java环境配置:http://www.linuxdiyf.com/linux/13591.html
打造Linux三流娱乐环境,二流办公环境,一流Java开发环境:http://www.linuxdiyf.com/linux/13560.html
已经Root并设置好java环境的中文Ubuntu15.04下载:http://www.linuxdiyf.com/linux/13111.html
Ubuntu15.04安装java8的步骤:http://www.linuxdiyf.com/linux/12609.html
Ubuntu中,关于的Java一切:http://www.linuxdiyf.com/linux/12882.html