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

dat*_*ent 3 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)
Run Code Online (Sandbox Code Playgroud)

为了运行特定的应用程序,我想使用从RPM提供的Oracle Java 1.6.

我将Oracle二进制文件复制到特定的新目录:

# pwd
/oracleJava/jdk-6u45-linux-x64-rpm
Run Code Online (Sandbox Code Playgroud)

我提取了二进制文件,它给了我以下文件:

# 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
Run Code Online (Sandbox Code Playgroud)

我安装了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]
#
Run Code Online (Sandbox Code Playgroud)

但是,Java版本只显示1.7#java -version 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.

非常感谢有用的建议.提前致谢.

bry*_*ryn 14

Oracle JDK RPM很糟糕.

  • 他们没有注册替代系统.
  • 他们不提供(以RPM 单位)"java"
  • 他们弄乱了他们的RPM'版本字符串'并依赖Epoch(...)
  • 所有版本的JDK(即1.6 vs 1.7)都具有相同的Epoch

为了快速解决您的问题,您可以运行以下命令:

/usr/sbin/alternatives --install /usr/bin/java java /usr/java/default/bin/java 20000
Run Code Online (Sandbox Code Playgroud)

它将注册并优先选择Oracle Java安装.OpenJDK的重量为16000; 这里我们注册20000.一旦你运行这个命令,你可以使用(已经提到的)替代--config java命令在java版本之间切换.

至于快速修复,您可以使用我的虚拟Java包.它很可能并不完美(我愿意改进;)),但它提供了 java(让我的apache-tomcat包很开心)并注册替代系统.这个虚拟包只依赖于jdk ...你可以在这里找到它:https://github.com/keystep/virtual-java-rpm


lea*_*oop 6

运行以下命令以查看是否列出了JVM.

sudo update-alternatives --config java

如果列出了您的JVM,请选择它.

  • 这是一个伟大的命令,我肯定会在不久的将来将其用于其他目的.谢谢你.出于我的直接目的,最好的方法是将JAVA_HOME设置为`/ usr/java/jdk1.6.0_45/bin`,以使当前的应用程序执行供应商期望的操作. (2认同)