我不太确定我是如何陷入这种混乱的,但由于某种原因,我无法使用替代方案更改当前版本的Java.我可以运行替代方案--config java并输入我的选择但是当我回显java或javac的版本号时,它每次吐出1.5(尽管替代显示当前版本是1.6).顺便说一句,我正在使用的服务器正在运行RHEL5.
我已经验证了替代品中使用的路径指向正确的目录.这是我的会话的一些输出:
[brilewis @ myserver] $ sudo/usr/sbin/update-alternatives --config java
有3个程序提供'java'.
选择命令
**1 /usr/lib/jvm/jre-1.4.2-gcj/bin/java
+ 2 /usr/java/jdk1.5.0_10/bin/java
3 /usr/java/jdk1.6.0_16/bin/java输入以保持当前选择[+]或类型选择编号:3
[brilewis @ myserver] $ java -version
java版"1.5.0_10"Java(TM)2运行时环境,标准版(版本1.5.0_10-b03)Java HotSpot(TM)服务器VM(版本1.5.0_10-b03,混合模式)
[brilewis @ myserver] $ sudo/usr/sbin/update-alternatives --config java
有3个程序提供'java'.
选择命令
**1 /usr/lib/jvm/jre-1.4.2-gcj/bin/java
2 /usr/java/jdk1.5.0_10/bin/java
+ 3 /usr/java/jdk1.6.0_16/bin/java输入以保留当前选择[+]或类型选择号:
更新:以下是输出echo $PATH
:
/usr/java/jdk1.5.0_10/bin:/usr/local/apache-ant-1.7.1/bin:/usr/local/apache-tomcat-6.0.24:/usr/kerberos/bin:/usr/ local/bin目录:/ bin中:在/ usr/bin中:在/ usr/NX/bin中:/家庭/ brilewis /箱
更新(4/26/10):我遵循了Bert的建议,并从/ etc/profile中的PATH环境var中删除了JAVA_HOME.执行此操作后,我能够使用替代方法来更改Java的版本.唯一的问题是,当我尝试运行时javac
,我得到"-bash:javac:command not found".当版本设置为1.5时,不会发生这种情况.
对于Oracle Java 6u30,一旦安装了RPM,就可以配置替代方案:
/usr/sbin/alternatives --install "/usr/bin/java" "java" "/usr/java/default/bin/java" 2 \ --slave /usr/bin/javac javac /usr/java/default/bin/javac \ --slave /usr/bin/javadoc javadoc /usr/java/default/bin/javadoc \ --slave /usr/bin/jar jar /usr/java/default/bin/jar \ --slave /usr/bin/keytool keytool /usr/java/default/bin/keytool \ --slave /usr/bin/orbd orbd /usr/java/default/bin/orbd \ --slave /usr/bin/pack200 pack200 /usr/java/default/bin/pack200 \ --slave /usr/bin/rmid rmid /usr/java/default/bin/rmid \ --slave /usr/bin/rmiregistry rmiregistry /usr/java/default/bin/rmiregistry \ --slave /usr/bin/servertool servertool /usr/java/default/bin/servertool \ --slave /usr/bin/tnameserv tnameserv /usr/java/default/bin/tnameserv \ --slave /usr/bin/unpack200 unpack200 /usr/java/default/bin/unpack200 \ --slave /usr/share/man/man1/java.1.gz java.1.gz /usr/java/default/man/man1/java.1.gz \ --slave /usr/share/man/man1/keytool.1.gz keytool.1.gz /usr/java/default/man/man1/keytool.1.gz \ --slave /usr/share/man/man1/orbd.1.gz orbd.1.gz /usr/java/default/man/man1/orbd.1.gz \ --slave /usr/share/man/man1/pack200.1.gz pack200.1.gz /usr/java/default/man/man1/pack200.1.gz \ --slave /usr/share/man/man1/rmid.1.gz rmid.1.gz /usr/java/default/man/man1/rmid.1.gz \ --slave /usr/share/man/man1/rmiregistry.1.gz rmiregistry.1.gz /usr/java/default/man/man1/rmiregistry.1.gz \ --slave /usr/share/man/man1/servertool.1.gz servertool.1.gz /usr/java/default/man/man1/servertool.1.gz \ --slave /usr/share/man/man1/tnameserv.1.gz tnameserv.1.gz /usr/java/default/man/man1/tnameserv.1.gz \ --slave /usr/share/man/man1/unpack200.1.gz unpack200.1.gz /usr/java/default/man/man1/unpack200.1.gz
然后激活配置:
/usr/sbin/alternatives --config java
并从菜单中选择/ usr/java/default/bin/java.
另外,你必须gzip手册页
gzip /usr/java/default/man/man1/*.1
此外,Oracle java RPMs可能已经破坏了您的替代符号链接,因此强制它是正常的.
ln -sf /etc/alternatives/java /usr/bin/java
我可以使用以下步骤更改CentOS上的默认Java:
添加IBM JDK:
alternatives --install /usr/bin/java java /opt/WebSphere/AppServer/java/bin/java 3
将新的IBM JDK设置为默认值:
alternatives --config java (then select #3 in the list)
键入java -version
在提示符下看到的结果.