使用替代项更改 Java 版本时出现问题

2022-09-02 19:35:12

我不太确定我是如何陷入这种混乱的,但由于某种原因,我无法使用替代方案更改Java的当前版本。我可以运行替代方案 - 配置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 Runtime Environment, Standard Edition (build 1.5.0_10-b03) Java HotSpot(TM) Server VM (build 1.5.0_10-b03, mixed mode)

[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:/home/brilewis/bin

更新(4/26/10):我遵循了Bert的建议,并从/etc/profile的PATH环境var中删除了JAVA_HOME。完成此操作后,我能够使用替代方案来更改Java的版本。唯一的问题是,当我尝试运行时,我得到“-bash:javac:命令未找到”。当版本设置为 1.5 时,不会发生这种情况。javac


答案 1

对于 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 RPM可能已经破坏了您的替代方案符号链接,因此强制其正常。

ln -sf /etc/alternatives/java /usr/bin/java

答案 2

我可以使用以下步骤更改 CentOS 上的默认 Java:

  1. 添加 IBM JDK:

    alternatives --install /usr/bin/java java /opt/WebSphere/AppServer/java/bin/java 3
    
  2. 将新的 IBM JDK 设置为缺省值:

    alternatives --config java   (then select #3 in the list)
    
  3. 在提示符下键入以查看结果。java -version


推荐