LinuxSir.Org  
| 网站首页 | 论坛帮助 |

欢迎来到LinuxSir.Org!
您还未登录,请登录后查看论坛,或者点击论坛上方的注册链接注册新账号。


发表新主题 回复
 
主题工具
旧 07-06-10, 22:42 第 1 帖
proge 帅哥
 
proge 的头像
 
 
注册会员  
  注册日期: Feb 2005
  帖子: 219
  精华: 0
 

标题: 使用alternative管理多个版本的JDK


无论RHEL还是Fedora,默认都是安装的gcjlib和gcj,许多时候我们需要配置其它的JDK来满足我们的应用,本文以RHEL 5为例,介绍如何使用alternative来管理多个版本的JDK。其实理解原理后,我们也可以用alternative来管理多个版本的GCC、Tomcat诸如此类的。

本文将以Sun JDK 1.4, 1.5, 1.6为例来配置。Sun的JDK默认安装在/usr/java目录下,IBM的JDK默认安装在/opt目录下。(BEA的JDK JRockit也是一个不错的选择,另外还有开源的Blackdown JDK,可惜目前似乎停止了项目,只有1.4的JDK。)
上传的图像
文件类型: png 1.png (9.5 KB, 92 次查看)







__________________
我是用双手打天下的程序员。
  proge 当前离线   回复时引用此帖
旧 07-06-10, 22:46 第 2 帖
proge 帅哥
 
proge 的头像
 
 
注册会员  
  注册日期: Feb 2005
  帖子: 219
  精华: 0
 

配置完后只需要执行
alternative --config java
alternative --config javac
即可选择你希望的JDK版本,
上传的图像
文件类型: png 2.png (18.8 KB, 71 次查看)
  proge 当前离线   回复时引用此帖
旧 07-06-10, 22:57 第 3 帖
proge 帅哥
 
proge 的头像
 
 
注册会员  
  注册日期: Feb 2005
  帖子: 219
  精华: 0
 

alternative的原理是根据配置文件,修改一系列的链接来完成不同版本之间的“切换”的。感兴趣的话可以查看alternative的相关文档,本着实用的原则,这就不浪费口水了。

RHEL和Fedora的alternative配置文件存放在/var/lib/alternatives目录下。(SUSE的配置文件存放在/var/lib/rpm/alternatives目录下,Debain的配置文件好象是存放在/var/lib/dpkg/alternatives目录下,对不起,没有用过Debain。)

我们先来看看alternative配置文件的结构。
  proge 当前离线   回复时引用此帖
旧 07-06-10, 23:07 第 4 帖
proge 帅哥
 
proge 的头像
 
 
注册会员  
  注册日期: Feb 2005
  帖子: 219
  精华: 0
 

真@!#$$%^扫兴,上传不了图片了,只好删掉几个原来的附件。
上传的图像
文件类型: png 3.png (8.2 KB, 54 次查看)
  proge 当前离线   回复时引用此帖
旧 07-06-10, 23:13 第 5 帖
proge 帅哥
 
proge 的头像
 
 
注册会员  
  注册日期: Feb 2005
  帖子: 219
  精华: 0
 

第1行默认是auto,修改后会变成manual。第2行是链接的位置。
后面每2行是一组,先是工具链的名字,然后是链接的位置。
可以看出偶数行都是链接的位置,直到一个空行。

空行后是主链接的目标(也就是alternative管理的这个配置是什么),下一行是主链批的优先级(一般用版本号),以后的每1行都是链接的目标。
  proge 当前离线   回复时引用此帖
旧 07-06-10, 23:15 第 6 帖
proge 帅哥
 
proge 的头像
 
 
注册会员  
  注册日期: Feb 2005
  帖子: 219
  精华: 0
 

再来看看修改后的配置文件,记得数字的版本号前一行是主链批的目标。后面是工具链的目标。数量要匹配。
上传的图像
文件类型: png 4.png (17.4 KB, 40 次查看)
  proge 当前离线   回复时引用此帖
旧 07-06-10, 23:21 第 7 帖
proge 帅哥
 
proge 的头像
 
 
注册会员  
  注册日期: Feb 2005
  帖子: 219
  精华: 0
 

附件中是java和javac的alternative的配置文件,解开自己再开开。
上传的附件
文件类型: bz2 alternatives.tar.bz2 (473 字节, 22 次查看)
  proge 当前离线   回复时引用此帖
旧 07-06-11, 08:59 第 8 帖
proge 帅哥
 
proge 的头像
 
 
注册会员  
  注册日期: Feb 2005
  帖子: 219
  精华: 0
 

最后在配置一下环境变量。有很多方法,我一般喜欢改写/etc/profile,这里的例子是在bash下仅对当前的环境起作用的设置。
export JRE_HOME=/usr/lib/jvm/jre
export JAVA_HOME=/usr/lib/jvm/java

正确的使用alternative来管理多个版本的JDK,就不会出现使用Sun的JVM却用着gcjlib这样可能导致一些不可预测的错误。
  proge 当前离线   回复时引用此帖
旧 07-09-02, 20:56 第 9 帖
ykrocku 帅哥
 
ykrocku 的头像
 
 
注册会员  
  注册日期: Nov 2006
  帖子: 59
  精华: 0
 

alternative让我郁闷了很久阿~~~







__________________
http://hi.baidu.com/yk103
  ykrocku 当前离线   回复时引用此帖
旧 07-10-31, 20:45 第 10 帖
云和山的彼端
 
云和山的彼端 的头像
 
 
注册会员  
  注册日期: Nov 2002
  帖子: 157
  精华: 0
 

还用什么全局变量?

win32和Linux统一的方法:-vm 加上JDK路径/java
  云和山的彼端 当前离线   回复时引用此帖
旧 09-08-07, 22:45 第 11 帖
hantsy
 
hantsy 的头像
 
 
注册会员  
  注册日期: May 2003
  我的住址: 广州
  帖子: 2,611
  精华: 3
 

目前流行的linux 版本都已经自带了 OpenJDK 6 与 SUN 官方的 JDK 差别已经不是很大了,已经直接可以用于商业开发了。
如果想使用 SUN JDK ,可以使用 jpackages.org 的源,或者使用它提供的src.rpm重新打包 SUN JDK ,使其符合系统的打包规则(当然也是符合alternatives)。
http://blog.chinaunix.net/u/1096/showart_681599.html
http://blog.chinaunix.net/u/1096/showart_1009044.html







__________________
Spring Live 中文版发布
Blog:http://hantsy.cublog.cn
Gmail/Gtalk:hantsy@gmail.com
  hantsy 当前离线   回复时引用此帖
旧 09-08-08, 10:45 第 12 帖
fangshun
 
fangshun 的头像
 
 
★版主☆  
  注册日期: Nov 2002
  我的住址: 陕西
  帖子: 661
  精华: 11
 

不过我用ubuntu的时候,总是喜欢删掉openjdk,然后装上sunjdk,呵呵,习惯的力量啊!
  fangshun 当前离线   回复时引用此帖
旧 09-09-25, 01:05 第 13 帖
mycatboys
 
 
 
注册会员  
  注册日期: Nov 2008
  帖子: 18
  精华: 0
 

精华啊 不过我已经看过了 哈哈 还是顶下 *^__^*








------------------------------------------------------------
新亭脑佳佳官方网站,堕泪波动挺官方网站
  mycatboys 当前离线   回复时引用此帖
发表新主题 回复


主题工具

发帖规则
您 [不可以] 发表新主题
您 [不可以] 回复主题
您 [不可以] 上传附件
您 [不可以] 编辑您的帖子

已 [启用] BB 代码
已 [启用] 表情符号
已 [启用] IMG 代码
已 [禁用] HTML 代码
[论坛跳转…]


所有时间均为[北京时间]。现在的时间是 08:53


Powered by vBulletin 版本 3.6.8
版权所有 ©2000 - 2012, Jelsoft Enterprises Ltd.
官方中文技术支持: vBulletin 中文
版权所有 ©2002 - 2011, LinuxSir.Org