我从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 -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 .
非常感谢有用的建议 . 提前致谢 .
5 回答
问题是Oracle的RPM(故意IMO!)对“替代”系统一无所知 .
相反,他们在非标准位置(/ usr / java)安装东西,然后希望用户/系统管理员手动混乱PATH变量 .
这是一件令人讨厌的事!
所以在您的情况下可能发生的事情是您的JDK / JRE已安装在/ usr / java的子目录中...但由于您尚未将相关的
bin
子目录添加到PATH
的前面,您仍然在拾起OpenJDK工具通过java
命令名称 .您可以通过使用“alternative”配置然后选择Oracle命令来解决此问题 . 但它很混乱,特别是如果你也想要JDK工具 . (他们中有很多!)
如果您使用Chef,另一种方法是使用“java”cookbook进行安装 .
Oracle JDK RPM很糟糕 .
他们没有注册替代系统 .
他们没有 Provide (以RPM为单位)"java"
他们弄乱了他们的RPM 'version string'并依靠Epoch(...)
所有版本的JDK(即1.6对1.7)具有相同的Epoch
为了快速解决您的问题,您可以运行以下命令:
它将注册并优先选择Oracle Java安装 . OpenJDK的重量为16000;这里我们注册20000.一旦你运行这个命令,你可以使用(已经提到的)替代--config java命令在java版本之间切换 .
至于快速修复,您可以使用我的虚拟Java包 . 它's quite possibly not perfect (I'开放进行改进;)),但它提供java(使我的apache-tomcat包快乐)并注册替代系统 . 这个虚拟包只依赖于jdk ...你可以在这里找到它:https://github.com/keystep/virtual-java-rpm
运行以下命令以查看是否列出了JVM .
sudo update-alternatives --config java
如果列出了您的JVM,请选择它 .
请检查您的JAVA_HOME是否使用echo
$JAVA_HOME
指向JDK 6 . 为了将JAVA_VERSION
更改为Java 6,您需要指向Java开发套件6.您还需要将bin目录添加到$PATH
变量 . 请确保JDK6 bin目录在其他JDK bin之前的$ PATH中(如果有) . 您可以通过命令java -version
检查环境中Java的版本.learningloop的其他答案非常适合在不同的Java配置之间切换尝试以下方法
我有同样的问题,并通过这种方法得到解决方案