我在CentOS上安装了OpenJDK1.7;我安装了Oracle的Java rpm; Oracle Java似乎不存在

pbossiut  于 2022-11-07  发布在  其他
关注(0)|答案(5)|浏览(142)

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

为了运行一个特定的应用程序,我想使用Oracle的Java 1.6,由RPM提供。
我将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实用程序认为它安装正确:软件包-qjdk 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. el 6_4-x86_64)OpenJDK 64位服务器VM(build 23. 7-b 01,混合模式)
换句话说,我希望Oracle文件在某个地方给予我一些新的/java目录,其中包含一个新的java可执行文件,该文件将返回对“java -version”的不同回答
我需要这个新目录,这样我才能设置JAVA_HOME并使用Java的1.6版本。
如果您有任何有用的建议,我们将不胜感激。

rjjhvcjd

rjjhvcjd1#

Oracle JDK的RPM非常糟糕。

  • 它们不会在 * 备选项 * 系统中注册。
  • 它们不**提供***(RPM术语)“java”*
  • 他们搞砸了他们的RPM“版本字符串”,并依赖于纪元(...)
  • JDK的所有版本(即1.6与1.7)都具有相同的Epoch

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

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

它将注册并首选Oracle java安装作为替代。在这里,我们使用20000进行注册。运行此命令后,您可以使用(已经提到的)* alternates--config java* 命令在Java版本之间切换。
至于一个不那么快速的修复,你可以使用我的虚拟java包。)),但它 * 提供 * java(使我的apache-tomcat包满意)并在替代系统中注册。这个虚拟包仅仅依赖于 jdk...你可以在这里找到它:https://github.com/keystep/virtual-java-rpm

1tuwyuhd

1tuwyuhd2#

运行以下命令,查看JVM是否已列出。
sudo update-alternatives --config java
如果列出了您的JVM,请选择它。

vyswwuz2

vyswwuz23#

问题是甲骨文的RPM(故意IMO!)对“替代”系统一无所知。
相反,他们在一个非标准的地方(/usr/java)安装东西,然后期望用户/系统管理员手动修改PATH变量。
真是讨厌!
因此,在您的情况下可能发生的情况是,您的JDK / JRE已安装在/usr/java的子目录中......但由于您尚未将相关的bin子目录添加到PATH的前面,因此您仍然通过java命令名获得OpenJDK工具。
您可以在事后通过使用“替代项”来配置并选择Oracle命令来解决这个问题。但是这很混乱,特别是如果您还需要JDK工具的话。(JDK工具有很多!)

dojqjjoe

dojqjjoe4#

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

o4tp2gmn

o4tp2gmn5#

尝试以下方法
删除OpenJDK文件夹

/usr/lib/jvm

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

相关问题