首页 > 系统相关 >ubuntu java版本间切换

ubuntu java版本间切换

时间:2024-05-27 19:01:36浏览次数:19  
标签:bin java 切换 ubuntu 80 root usr

  今天在编译 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

相关文章

  • java泛型
    java泛型本人自建博客添砖java文章目录java泛型基本理解语法经典案例自定义泛型类自定义泛型接口自定义泛型方法泛型的继承和通配符通配符基本理解基本理解:就像类是对对象的抽象,泛型就是对类型的抽象,其作用类似于c++的模板语法泛型的声明:interface接......
  • 《python本机环境多版本切换》-两种方式以及具体使用--venv/pyenv+pycharm测试
    阿丹:sourcemyenv/bin/activate    在开发使用rasa的时候发现自己安装的python环境是3.12的,和rasa不兼容,所以实践一下更换多python环境。使用虚拟环境在Python中使用虚拟环境来切换Python版本是一个常见的做法,这可以帮助你为不同的项目维持独立的Python环境和依赖......
  • 【python】自动化登录学习通页面-多表单切换
    fromseleniumimportwebdriverfromselenium.webdriver.common.byimportByfromselenium.common.exceptionsimportStaleElementReferenceExceptionfromselenium.webdriver.support.uiimportWebDriverWaitfromselenium.webdriver.supportimportexpected_cond......
  • Java HelloWorld实现
    第一个博客,当然从HelloWorld开始,主要测试下CDDN的代码高亮效果如何。下面上代码:`packagecom.gzymz.demo;/**测试@authorAdministrator*/publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("HelloWorld,公子云梦泽!");}}`emm......
  • java调用科大讯飞在线语音合成API --内附完整项目
    科大讯飞语音开放平台基础环境搭建1.用户注册 注册科大讯飞开放平台账号2.注册好后先创建一个自己的应用创建完成后进入应用可以看到我们开发需要的三个参数:APPID,APISecret,APIKey3.因为平台提供的SDK中只支持了简单的中英两种语言语音合成,所以这里我们不会用提供的Jav......
  • 如何挑选一个合适的HIS系统? 基于B/S架构,JAVA语言,springboot最新技术栈开发的整套云HIS
    如何挑选一个合适的HIS系统?基于B/S架构,JAVA语言,springboot最新技术栈开发的整套云HIS系统源码HIS源码最近有很多人在询问,有没有最优秀的HIS系统?在这里小编是没办法回答的。为什么呢?因为要看你站在什么样的角度,如果是从医院的角度来说,那么我会建议你看看这篇文章,看看什么是......
  • EBU4201 Introductory Java Programming 2023/24Mini Project(⼉童练习乘法表 下个文
    Task1[25marks]SuperHeroTTisasimpleGraphicalUserInterface(GUI)applicationforchildrenwheretheycanpractisetheirtimestables(seeFigure1).Whenlaunched,yourappshouldlooklikeFigure1-FirstlaunchofSuperHeroTT.Thedrop-downbo......
  • JAVA面试中,面试官最爱问的问题。
     请用wait-notify写一段代码来解决生产者-消费者问题。生产者-消费者问题是一个经典的并发问题,它描述的是两类并发操作的问题:生产者将数据放入缓冲区,消费者从缓冲区取出数据。使用wait()和notify()方法可以在Java中实现这个问题的解决方案。以下是一个简单的示例,其中包含一......
  • JAVA面试中,面试官最爱问的问题。
    Java中的final关键字有什么作用?在Java中,final关键字具有多种用途,它可以被应用于类、方法和变量。以下是final关键字的具体作用:修饰变量:当final用于修饰一个变量时,意味着这个变量只能被赋值一次,即它是一个常量。对于基本数据类型,final使变量的值不可变;对于引用类型,final使......
  • java面试,面试官最爱问的问题。
    什么是Java中的多线程?如何实现多线程?Java中的多线程:在Java中,多线程指的是同时执行多个线程以完成不同的任务。线程是程序执行流的最小单元,一个进程可以包含多个线程,这些线程共享进程的内存空间和资源,它们可以并发或并行地执行任务,从而提高程序的执行效率和响应速度。如何实......