ubuntu java版本间切换

  今天在编译 rk3288 安卓5.1时出错,提示需要java 1.7.x版本的jdk,而我的ubuntu默认已经安装了java 1.8.0_362版本,下面介绍下我是如何进行java版本切换的。

1. 从官网上下载得到 java 1.7.0_80压缩包(找个QQ邮箱注册账号后就可以直接下载了)

 

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的一些信息:

 执行 sudo update-alternatives --display 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:

1
sudo update-alternatives --install /usr/bin/java java /ext2disk_2/QY_RK3288S/jdk1.7.0_80/jre/bin/java 1090

 

5. 重复步骤4,将javap, javadoc,javac也切换为1.7.0_80 版本(注:这几个如果不设置的话则有可能仍用的是1.8.0版本的):

1
2
3
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:用来运行java可执行程序的工具。
  • javac:java编译器,用来编译java类型的文件。
  • javap:JDK里面的一个反汇编工具。
  • javadoc:JDK里面的一个java API 文档生成工具。

 

6. 若是需要对 java,javac,javap,javadoc的不同版本间进行切换,则执行下面命令进行切换,否则可以不用理会:

1
2
3
4
sudo update-alternatives --config java     #java版本间相互切换,如1.7.0和1.8.0版本之间互切
sudo update-alternatives --config javac    #javac版本间相互切换,如1.7.0和1.8.0版本之间互切
sudo update-alternatives --config javap    #javap版本间相互切换,如1.7.0和1.8.0版本之间互切
sudo update-alternatives --config javadoc  #javadoc版本间相互切换,如1.7.0和1.8.0版本之间互切 

 

  这里以java工具为例,演示如何在1.7.0和1.8.0版本之间进行切换:

执行 sudo update-alternatives --config java 命令后根据提示输入对应的数字编号回车并切换,我这里输入了0:

复制代码
 1 book@ubuntu:/$ sudo update-alternatives --config java
 2 There are 2 choices for the alternative java (providing /usr/bin/java).
 3 
 4   Selection    Path                                             Priority   Status
 5 ------------------------------------------------------------
 6 * 0            /ext2disk_2/QY_RK3288S/jdk1.7.0_80/jre/bin/java   1090      auto mode
 7   1            /ext2disk_2/QY_RK3288S/jdk1.7.0_80/jre/bin/java   1090      manual mode
 8   2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java    1081      manual mode
 9 
10 Press <enter> to keep the current choice[*], or type selection number: 0
11 book@ubuntu:/$
复制代码

 

7. 最后一步是配置JAVA_HOME和JRE_HOME等环境变量,将我们的解压路径添加到这些系统环境变量里:

  • sudo vi /etc/profile  打开profile文件,末尾处追加如下几行代码,保存后执行 source /etc/profile 即可:
1
2
3
4
5
#这里的路径为我的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. 检查是否切换成功:

复制代码
 1 root@ubuntu:/# java -version
 2 java version "1.7.0_80"
 3 Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
 4 Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
 5 root@ubuntu:/#
 6 root@ubuntu:/#
 7 root@ubuntu:/# javac -version
 8 javac 1.7.0_80
 9 root@ubuntu:/#
10 root@ubuntu:/# javap -version
11 1.7.0_80
12 root@ubuntu:/#
13 root@ubuntu:/#
复制代码

  


 

  注:由于我从1.8.0_362的JDK版本切换为1.7.0_80版本,故我的安卓5.1源码需要把上一次编出来的整个out文件夹删掉再重新编译!!!

 

posted @   长颈鹿也落枕  阅读(257)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
欢迎这位怪蜀黍来到《ubuntu java版本间切换 - 长颈鹿也落枕 - 博客园》
点击右上角即可分享
微信分享提示