我的编程空间,编程开发者的网络收藏夹
学习永远不晚

linux中如何实现jdk随时切换版本

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

linux中如何实现jdk随时切换版本

小编给大家分享一下linux中如何实现jdk随时切换版本,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

项目处理问题遇到如下情况,引用第三方的jar包报出ClassDefNotFoundException错误导致app崩溃,双方沟通确认该类存在且排除工程未clean,代码混淆导致等原因。

注意到编译app的时候提示了很多如下与正常情况下不一样的信息:

trouble processing:
bad class file magic (cafebabe) or version (0033.0000)
...while parsing com/baidu/mapapi/SDKInitializer.class
...while processing com/baidu/mapapi/SDKInitializer.class
279 warnings
SDKInitializer正是ClassDefNotFoundException报错的类。
百度搜索出现这个编译提示找到了问题出现的原因:第三方公司打包这个jar包使用的jdk1.7版本(大于1.6),而我们编译app使用的是1.6版本,由于编译出的字节码版本不一致,导致无法转换成android虚拟机刻度的字节码,因此引用的jar包实际并未编译到当前apk中,程序运行的时候当然就找不到相应的类了。
公司编译服务器实际上配置了多个jdk版本,而且android编译是在设置环境变量的时候设置的jdk版本。编译android4.4使用的是jdk1.6,而编译android5.0则使用的是jdk1.7,这就涉及到了如何随时切换jdk版本。
先来看看如何设置jdk环境变量,百度搜索得到的答案多是修改~/.bashrc或修改/etc/profile文件一次性完成配置。我用vi打开这两个文件并未找到相应的jdk环境变量,但是使用java -version确实能看到默认的jdk版本。这就有了疑问,当前默认jdk软件的环境变量是在哪里配置的?
使用 which java 命令找到当前java可执行程序的位置
fordreamxin@compiler207:~$ which java
/usr/bin/java
 /usr/bin/目录下存放的多是用户安装的软件

fordreamxin@compiler207:~$ ll /usr/bin/java
lrwxrwxrwx 1 root root 22 Nov 13 06:18 /usr/bin/java -> /etc/alternatives/java*

alternatives是一个linux下的多版本管理软件,利用它就可以实现jdk的版本切换,这点稍后再描述。先来alternatives目录地下看看有些什么东西。

fordreamxin@compiler207:/etc/alternatives$ ls java*
java  java.1.gz  javac  javac.1.gz  javadoc  javadoc.1.gz  javah  javah.1.gz  javap  javap.1.gz  java_vm  javaws  javaws.1.gz
fordreamxin@compiler207:/etc/alternatives$ ll java
lrwxrwxrwx 1 root root 36 Nov 13 06:17 java -> /usr/lib/jvm/java-6-sun/jre/bin/java*

原来该目录下放置了很多软件的版本引用,从这里可以找到当前软件版本(jdk)的实际位置

fordreamxin@compiler207:/etc/alternatives$ ls /usr/lib/jvm/
java-1.7.0-openjdk-amd64  java-6-sun  java-6-sun-1.6.0.26  java-7-openjdk-amd64
在/usr/lib/jvm文件夹下时间存储了各个jdk版本的软件,而alternatives正是通过修改它的java引用达到版本切换的目的。
使用alternatives实现版本切换的方法如下:

1. 查看相应的jdk是否在 ubuntu的jdk菜单里,查看:
update-alternatives --config java
update-alternatives --config javac

2.如果没有在菜单里可以如下方式添加:
update-alternatives --install /usr/bin/java java /usr/lib/jvm/java/jdk1.6.0_12/bin/java 300
update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java/jdk1.6.0_12/bin/javac 300
 注意:jdk1.6.0_12 版本不同会有变动

3.sudo update-alternatives --config java
sudo update-alternatives --config javac
选择序号,回车即可;
4.然后java -version,javac -version查看当前jdk版本

但是使用alternatives需要sudo超级权限,也就是说这种切换是一种全局切换,同修改~/.bashrc或/etc/profile一样,一次操作,全局有效。如果没有超级权限怎么办?

设置环境变量linux提供了export命令,该命令的修改只对当前终端有效。

fordreamxin@compiler207:/$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
上面的命令显示了当前的环境变量,也就是~/.bashrc或/etc/profile文件的内容,它表示了当前所有能够全局使用的所有软件或命令的环境变量,没有这些变量,我们不能在任意目录下使用很多命令或软件,这也是环境变量的意义所在。
通过如下命令可以在$PATH的开始或末尾添加jdk的环境变量(bin目录下保存了java, javac, javah等可执行命令)

export PATH="/usr/lib/jvm/java-7-openjdk-amd64/bin":$PATH

export PATH="$PATH:/usr/lib/jvm/java-7-openjdk-amd64/bin/"
由于执行的时候总是从$PATH的开始搜索可执行文件的位置,所以如果环境变量中已经设置了一个jdk,那么把新的jdk设置在PATH的开始才会有用。

以上是“linux中如何实现jdk随时切换版本”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

linux中如何实现jdk随时切换版本

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

linux中如何实现jdk随时切换版本

小编给大家分享一下linux中如何实现jdk随时切换版本,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!项目处理问题遇到如下情况,引用第三方的jar包报出Class
2023-06-12

jdk如何实现不同版本切换windows

jdk如何实现不同版本切换windows,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在实际开发中,可能会碰到不同项目需要利用不同jdk版本进行开发,这时候就需要我们安装不同j
2023-06-05

Win10怎么同时安装两个版本的JDK并随时切换

本篇内容主要讲解“Win10怎么同时安装两个版本的JDK并随时切换”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Win10怎么同时安装两个版本的JDK并随时切换”吧!一,官网下载两个版本的JDK
2023-07-05

手把手教学Win10同时安装两个版本的JDK并随时切换(JDK8和JDK11)

最近在学习JDK11的一些新特性,但是日常使用基本上都是基于JDK8,因此,需要在win环境下安装多个版本的JDK,下面这篇文章主要给大家介绍了手把手教学Win10同时安装两个版本的JDK(JDK8和JDK11)并随时切换的相关资料,需要的朋友可以参考下
2023-03-19

java中如何实现指定jdk的版本

本篇文章为大家展示了java中如何实现指定jdk的版本,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。java 指定某个jdk版本方法指定某个jdk版本方法背景:当我们在同一台机器上运行多个Java程
2023-05-31

Linux 中如何切换相同程序的不同版本

几天前,我们曾经讨论如何 如何在不同的 php 版本之间进行切换 。在那篇文章中,我们使用 update-alternatives 命令实现从一个 PHP 版本切换到另一个 PHP 版本。也就是说, update-alternatives
2022-06-04

linux如何安装多个版本php并切换

今天小编给大家分享一下linux如何安装多个版本php并切换的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。安装Apache
2023-07-06

编程热搜

目录