我从 CentOS 和 OpenJDK 1.7 开始
# java -version
java version "1.7.0_25"
OpenJDK Runtime Environment (rhel-2.3.10.4.el6_4-x86_64)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)
为了运行特定的应用程序,我想使用由 RPM 提供的 Oracle 的 Java 1.6。
我将 Oracle 二进制文件复制到特定的新目录:
# pwd
/oracleJava/jdk-6u45-linux-x64-rpm
我提取了二进制文件,它给了我以下文件:
# ls
jdk-6u45-linux-amd64.rpm
sun-javadb-core-10.6.2-1.1.i386.rpm sun-javadb-javadoc-10.6.2-1.1.i386.rpm
sun-javadb-client-10.6.2-1.1.i386.rpm sun-javadb-demo-10.6.2-1.1.i386.rpm
sun-javadb-common-10.6.2-1.1.i386.rpm sun-javadb-docs-10.6.2-1.1.i386.rpm
我安装了 RPM,rpm 实用程序认为它安装正确: rpm -q jdk jdk-1.6.0_45-fcs.x86_64
# rpm -Uvh ./*.rpm
Preparing... ########################################### [100%]
package jdk-2000:1.6.0_45-fcs.x86_64 is already installed
# rpm -Uvh sun-javadb-*.rpm
[I omit the feedback because it generates a formatting error]
#
但是Java版本只显示1.7 # java -版本 Java 版本“1.7.0_25” OpenJDK 运行时环境 (rhel-2.3.10.4.el6_4-x86_64) OpenJDK 64 位服务器 VM(构建 23.7-b01,混合模式)
换句话说,我期待 Oracle 文件在某处给我一些新的/java 目录,其中包含一个新的 java 可执行文件,它会为“java -version”返回不同的答案
我需要那个新目录,以便我可以设置 JAVA_HOME 并使用 1.6 版的 Java。
非常感谢有用的建议。提前致谢。
最佳答案
Oracle JDK RPM 太可怕了。
- 他们没有在alternatives 系统中注册。
- 他们不提供(按 RPM 计算)“java”
- 他们弄乱了他们的 RPM“版本字符串”并依赖 Epoch (...)
- JDK 的所有版本(即 1.6 和 1.7)都有相同的 Epoch
为了快速解决您的问题,您可以运行以下命令:
/usr/sbin/alternatives --install /usr/bin/java java /usr/java/default/bin/java 20000
它将注册并首选 Oracle java 安装作为替代。 OpenJDK 的权重为 16000;此处我们使用 20000 注册。运行此命令后,您可以使用(已提及的)alternatives --config java 命令在 java 版本之间切换。
至于不太快速的修复,您可以使用我的虚拟 java 包。它很可能不完美(我愿意改进 ;)),但它提供 java(让我的 apache-tomcat 包满意)并在备选系统中注册。这个虚拟包只依赖于 jdk...你可以在这里找到它:https://github.com/keystep/virtual-java-rpm
关于java - 我在 CentOS 上安装了 Open JDK 1.7;我安装了 Oracle 的 Java rpm; Oracle Java 似乎不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19514472/