今天在编译 rk3288 安卓5.1时出错,提示需要java 1.7.x版本的jdk,而我的ubuntu默认已经安装了java 1.8.0_362版本,下面介绍下我是如何进行java版本切换的。
1. 从官网上下载得到 java 1.7.0_80压缩包(找个QQ邮箱注册账号后就可以直接下载了)
https://www.oracle.com/java/technologies/javase/javase7-archive-downloads.html
2. 将压缩包放到ubuntu某个路径下进行解压,我这里的路径是:/ext2disk_2/QY_RK3288S
1 book@ubuntu:/ext2disk_2/QY_RK3288S$ ll 2 total 149952 3 drwxr-xr-x 4 root root 4096 May 26 19:23 ./ 4 drwxr-xr-x 6 root root 4096 May 26 19:03 ../ 5 -rwxr-xr-x 1 root root 153530841 May 26 19:22 jdk-7u80-linux-x64.tar.gz* 6 drwxr-xr-x 8 uucp 143 4096 Apr 10 2015 jdk1.7.0_80/ 7 drwxrwxr-x 36 hovan hovan 4096 May 27 00:14 qiyang-rk3288-android5.1-sdk/
3. 查看ubuntu当前1.8.0版本java的一些信息:
可以看到, /usr/bin/java 其实是链接指向 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java (即1.8.0版本的安装路径),优先级为1081(数字越大优先级越高)
1 book@ubuntu:/ext2disk_2/QY_RK3288S$ sudo update-alternatives --display java 2 java - auto mode 3 link best version is /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 4 link currently points to /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 5 link java is /usr/bin/java 6 slave java.1.gz is /usr/share/man/man1/java.1.gz 7 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java - priority 1081 8 slave java.1.gz: /usr/lib/jvm/java-8-openjdk-amd64/jre/man/man1/java.1.gz
4. 切换为 1.7.0_80 java 版本,优先级参数只要大于1081即可,这里我设为1090:
#设置java新路径为:/ext2disk_2/QY_RK3288S/jdk1.7.0_80/jre/bin/java,优先级为1090,将来/usr/bin/java链接将指向该路径
1 book@ubuntu:/$ sudo update-alternatives --install /usr/bin/java java /ext2disk_2/QY_RK3288S/jdk1.7.0_80/jre/bin/java 1090 2 [sudo] password for book: 3 update-alternatives: using /ext2disk_2/QY_RK3288S/jdk1.7.0_80/jre/bin/java to provide /usr/bin/java (java) in auto mode
5. 若是想在不同java版本间切换,则执行 sudo update-alternatives --config java 命令后根据提示输入对应的数字编号回车并切换,我这里输入了0
book@ubuntu:/$ sudo update-alternatives --config java There are 2 choices for the alternative java (providing /usr/bin/java). Selection Path Priority Status ------------------------------------------------------------ * 0 /ext2disk_2/QY_RK3288S/jdk1.7.0_80/jre/bin/java 1090 auto mode 1 /ext2disk_2/QY_RK3288S/jdk1.7.0_80/jre/bin/java 1090 manual mode 2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode Press <enter> to keep the current choice[*], or type selection number: 0 book@ubuntu:/$
6. 重复步骤4和步骤5,将javap, javadoc,javac也切换为1.7.0_80 版本:(注:这几个如果不设置的话则有可能仍用的是1.8.0版本的)
sudo update-alternatives --install /usr/bin/javap javap /ext2disk_2/QY_RK3288S/jdk1.7.0_80/bin/javap 1090
sudo update-alternatives --install /usr/bin/javadoc javadoc /ext2disk_2/QY_RK3288S/jdk1.7.0_80/bin/javadoc 1090
sudo update-alternatives --install /usr/bin/javac javac /ext2disk_2/QY_RK3288S/jdk1.7.0_80/bin/javac 1090
#同理,java,javac,javap,javadoc不同版本间的相互切换如下:
sudo update-alternatives --config java #java版本间相互切换
sudo update-alternatives --config javac #javac版本间相互切换
sudo update-alternatives --config javap #javap版本间相互切换
sudo update-alternatives --config javadoc #javadoc版本间相互切换
7. 最后一步是配置JAVA_HOME和JRE_HOME等环境变量,将我们的解压路径添加到这些系统环境变量里:
sudo vi /etc/profile 打开profile文件,末尾处追加如下几行代码,保存后执行 source /etc/profile 即可:
#这里的路径为我的1.7.0_80 JDK 解压目录
export JAVA_HOME=/ext2disk_2/QY_RK3288S/jdk1.7.0_80 export JRE_HOME=/ext2disk_2/QY_RK3288S/jdk1.7.0_80/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH
之后,哪天如果要用回1.8.0版本的JDK,则撤回/etc/profile文件的改动,然后使用 sudo update-alternatives --config [java | javac | javap | javadoc] 来切换回1.8.0版本!!!
8. 检查是否切换成功:
root@ubuntu:/# java -version java version "1.7.0_80" Java(TM) SE Runtime Environment (build 1.7.0_80-b15) Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode) root@ubuntu:/# root@ubuntu:/# root@ubuntu:/# javac -version javac 1.7.0_80 root@ubuntu:/# root@ubuntu:/# javap -version 1.7.0_80 root@ubuntu:/# root@ubuntu:/#
注:由于我从1.8.0_362的JDK版本切换为1.7.0_80版本,故我的安卓5.1源码需要把上一次编出来的整个out文件夹删掉再重新编译!!!
标签:bin,java,切换,ubuntu,80,root,usr From: https://www.cnblogs.com/learningendless/p/18215719