java - 我在 CentOS 上安装了 Open JDK 1.7;我安装了 Oracle 的 Java rpm; Oracle Java 似乎不存在

标签 java linux oracle centos rpm

我从 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/

相关文章:

linux - postgres 中的 Max_connection

c# - 如何使用Oracle和.Net客户端实现密码更改功能?

java - Netbeans 插件在调试时工作正常,但在将插件安装到 IDE 时无法工作

java - Hibernate 标准 API。加入

c - 为什么这个内联汇编不能为每条指令使用单独的 asm volatile 语句?

c - 如何在 VNC 紧密查看器上运行我的可执行文件?

列表中的 SQL 随机字符串

java - 如何提高 oracle 中简单选择查询的性能

java - 标准输入 Java 输入

java - 在独立的 Java 项目中访问 DB2 数据库