红联Linux门户
Linux帮助

这下linux系统的java版本再多也不怕了

发布时间:2008-07-07 11:18:58来源:红联作者:mconela
来源:网络

值班室的机器,Red Hat EL3版本,上面跑着二次开发的nms,因为是从以前的师兄手里接下来的,对于系统的配置和软件包不甚清楚

后来调试的时候,经常出现各种各样莫名其妙的问题,想老老实实照着软件tutorial学习一下吧,嘿,居然连studio都打不开,提示java路径错误

晕死,结果一看机器里面,java可真是热闹,有内置的GIJ,后来安装的光jdk就有1.4.2, 1.5.0, 1.6.0三个版本,我狂晕。symbolic link指向的jdk路径,已经空了。

无奈,重装系统得了,反正这个系统也让我搞得乱七八糟了,不如重新来过。

reinstall之后,恩,系统这个干净啊,再想想万一以后jdk版本一多了,乱了怎么办。

使用alternatives,自由切换linux的jdk版本
以前自己装上jdk之后,都是把java,javac做成链接替换掉/usr/bin/里面的gij的java和javac。但是这么做一直感觉都不是很“正规”,像是旁门左道。

前一阵子在网上看到有人说可以用一个叫做alternativs的工具来实现linux下软件版本的迁移,就决定使用alternatives来把jdk从gij迁移至我新装的jdk6.0。

alternatives在/usr/sbin目录下

首先需要把新安装的jdk添加到alternatives:

[root@djn-laptop sbin]# ./alternatives --install /usr/bin/java java /usr/share/jdk1.6.0_02/bin/java 300
[root@djn-laptop sbin]# ./alternatives --install /usr/bin/javac javac /usr/share/jdk1.6.0_02/bin/javac 300

然后使用--display选项可以查看目前系统可用的JDK:
[root@djn-laptop sbin]# ./alternatives --display java
java - 状态是手工。
链接目前指向 /usr/share/jdk1.6.0_02/bin/java
/usr/lib/jvm/jre-1.4.2-gcj/bin/java - 优先度 1420
从 keytool:/usr/lib/jvm/jre-1.4.2-gcj/bin/keytool
从 rmiregistry:/usr/lib/jvm/jre-1.4.2-gcj/bin/rmiregistry
从 jre_exports:/usr/lib/jvm-exports/jre-1.4.2-gcj
从 jre:/usr/lib/jvm/jre-1.4.2-gcj
/usr/share/jdk1.6.0_02/bin/java - 优先度 300
从 keytool:(null)
从 rmiregistry:(null)
从 jre_exports:(null)
从 jre:(null)
当前“最佳”版本是 /usr/lib/jvm/jre-1.4.2-gcj/bin/java。

[root@djn-laptop sbin]# ./alternatives --display javac
javac - 状态是手工。
链接目前指向 /usr/share/jdk1.6.0_02/bin/javac
/usr/lib/jvm/java-1.4.2-gcj/bin/javac - 优先度 1420
从 appletviewer:/usr/lib/jvm/java-1.4.2-gcj/bin/appletviewer
从 jar:/usr/lib/jvm/java-1.4.2-gcj/bin/jar
从 jarsigner:/usr/lib/jvm/java-1.4.2-gcj/bin/jarsigner
从 javadoc:/usr/lib/jvm/java-1.4.2-gcj/bin/javadoc
从 javah:/usr/lib/jvm/java-1.4.2-gcj/bin/javah
从 rmic:/usr/lib/jvm/java-1.4.2-gcj/bin/rmic
从 java_sdk_exports:/usr/lib/jvm-exports/java-1.4.2-gcj
从 java_sdk:/usr/lib/jvm/java-1.4.2-gcj
/usr/share/jdk1.6.0_02/bin/javac - 优先度 300
从 appletviewer:(null)
从 jar:(null)
从 jarsigner:(null)
从 javadoc:(null)
从 javah:(null)
从 rmic:(null)
从 java_sdk_exports:(null)
从 java_sdk:(null)
当前“最佳”版本是 /usr/lib/jvm/java-1.4.2-gcj/bin/javac。

确认无误后,就可以使用--config参数来选择想用的JDK
了:
[root@djn-laptop sbin]# ./alternatives --config java

共有 2 个程序提供“java”。

选择 命令
-----------------------------------------------
* 1 /usr/lib/jvm/jre-1.4.2-gcj/bin/java
+ 2 /usr/share/jdk1.6.0_02/bin/java

按 Enter 来保存当前选择[+],或键入选择号码:

[root@djn-laptop sbin]# ./alternatives --config javac

共有 2 个程序提供“javac”。

选择 命令
-----------------------------------------------
* 1 /usr/lib/jvm/java-1.4.2-gcj/bin/javac
+ 2 /usr/share/jdk1.6.0_02/bin/javac

按 Enter 来保存当前选择[+],或键入选择号码:

输入需要使用的JDK的编号就可以了。我的机器当然是选择第二项了。

哈,太棒了,办公室vnc到服务器上一看,果然有这个东东:/usr/sbin/alternatives

man 8 alternatives,看完之后,恩,果然好东西

哈,以后系统里不管有多少jdk/jre,或者什么其他的,都不怕了!
文章评论

共有 0 条评论