原生android 4.4.4 (KitKat)开始使用Java 7,但如今芯片厂商的codebase用的仍是Java 6,须要来回切换,纠结吧~html
先说一下原生android KitKat,参照android developer官网,安装openjdk便可:java
$ sudo apt-get update $ sudo apt-get install openjdk-7-jdk $ sudo update-alternatives --config java $ sudo update-alternatives --config javac
openjdk会直接安装到/usr/bin/目录下android
➜ ~T which javac /usr/bin/javac ➜ ~T javac -version javac 1.7.0_55
若是要切回Java 6,能够经过修改环境变量,个人java 6是直接在oracle官网<link>下载,放入了~/bin/目录里,所以单独把设置环境变量的脚本独立出来shell
➜ ~ cat ~/bin/set_java_1.6 export JAVA_HOME=~/bin/jdk1.6.0_45 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=$JAVA_HOME ➜ ~ source ~/bin/set_java_1.6 ➜ ~ which javac /home/caohong/bin/jdk1.6.0_45/bin/javac ➜ ~ javac -version javac 1.6.0_45
搞定。bash
更优雅的,参考<OSX setjdk>, 写一个执行脚本oracle
#!/bin/bash function setjdk { #local vmdir=/System/Library/Frameworks/JavaVM.framework/Versions #修改为本身的jdk所在的目录,而且要把目录名从jdk1.6.0_45改为jdk/1.6, 执行起来:setjdk 1.6 local vmdir=~/bin/caohong/bin/jdk/ local ver=${1?Usage: setjdk <version>} [ -d $vmdir/$ver ] || { echo Unknown JDK version: $ver return 1 } echo -n "Setting this terminal's JDK to $ver ... " export JAVA_HOME=$vmdir/$ver/Home PATH=$(echo $PATH | tr ':' '\n' | grep -v $vmdir | tr '\n' ':') export PATH=$JAVA_HOME/bin:$PATH java -version }
这个参考脚本里,PATH目录保证了不会由于执行屡次`setjdk`而把jdk目录累加起来(tr的做用是把冒号换成换行符,以便用grep -v把原来设置的jdk删除)app
另外,MAC系统里,从10.5以后,java目录能够经过 /usr/libexec/java_home得到(详细参考<apple developer: how to get jdk on max osx>): this
➜ ~ /usr/libexec/java_home /Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home
对于<OSX setjdk>里稍微有点过期,由于10.5以前,java的目录都是放在/System/Library/Frameworks/JavaVM.framework/Versions 目录下,default值是经过软连接来指定的:spa
➜ ~ ls -l /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK lrwxr-xr-x 1 root wheel 59 6 30 19:21 /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents