代码之家  ›  专栏  ›  技术社区  ›  dataquerent

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

  •  4
  • dataquerent  · 技术社区  · 11 年前

    我一开始使用的是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实用程序认为它安装正确: 转速-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运行时环境(rhel2-3.3.10.4.el6_4-x86_64) OpenJDK 64位服务器虚拟机(版本23.7-b01,混合模式)

    换句话说,我希望Oracle文件在某个地方给我一些新的/java目录,其中有一个新的java可执行文件,它将返回不同的“java版本”答案

    我需要这个新目录,这样我就可以设置JAVA_HOME并使用JAVA的1.6版本。

    如有帮助,我们将不胜感激。提前谢谢。

    5 回复  |  直到 11 年前
        1
  •  16
  •   bryn    11 年前

    Oracle JDK RPM非常糟糕。

    • 他们不在 选择 系统
    • 他们没有 提供 (以RPM为单位) “java”
    • 他们把RPM的“版本字符串”搞砸了,并依赖Epoch(…)
    • JDK的所有版本(即1.6和1.7)都有相同的Epoch

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

    /usr/sbin/alternatives --install /usr/bin/java java /usr/java/default/bin/java 20000
    

    它将注册并首选Oraclejava安装作为替代方案。OpenJDK的重量为16000;在这里我们注册了20000人。一旦您运行了这个命令,您就可以使用(已经提到的)在java版本之间切换 备选方案——配置java 命令

    至于不太快的修复方法,您可以使用我的虚拟java包。它很可能并不完美(我愿意改进;),但它 提供 java(让我的apache tomcat软件包很开心),并在备选系统中注册。此虚拟程序包仅取决于 jdk公司 …你可以在这里找到: https://github.com/keystep/virtual-java-rpm

        2
  •  6
  •   bprasanna    11 年前

    运行以下命令查看JVM是否已列出。

    sudo update-alternatives --config java

    如果您的JVM被列出,请选择它。

        3
  •  1
  •   Stephen C    3 年前

    问题是甲骨文的RPM(故意IMO!)对“替代品”系统一无所知。

    相反,他们将东西安装在一个非标准的地方(/usr/java),然后期望用户/系统管理员处理PATH变量。。。手工

    真讨厌!


    因此,在您的案例中可能发生的情况是,JDK/JJRE已安装在/usr/java的子目录中。。。但由于您尚未添加相关内容 bin 子目录到您的 PATH 您仍在通过 java 命令名称。


    您可以在事后使用“备选方案”进行配置,然后选择Oracle命令来解决此问题。但这很混乱,尤其是如果您也想要JDK工具的话。(他们很多!)

        4
  •  1
  •   Keerthivasan    11 年前

    请检查您的JAVA_HOME是否使用echo指向JDK 6 $JAVA_HOME 。为了改变你的 JAVA_VERSION 对于Java 6,您需要指向Java开发KIT 6。您还需要将bin目录添加到 $PATH 变量请确保JDK6 bin目录在$PATH中先于其他JDK bin(如果有的话)。您可以通过命令在环境中检查Java的版本 java -version 。learningloop的另一个答案非常适合在不同的Java配置之间切换

        5
  •  0
  •   Matrix    8 年前

    尝试以下方法

    从中删除OpenJDK文件夹

    /usr/lib/jvm
    

    我也遇到了同样的问题,并通过这种方法得到了解决方案