web-dev-qa-db-ja.com

Javaがrhelにインストールされているかどうかを確認する方法

Rhel VMを立ち上げました。シェル(bash)からコマンドを実行するためにJDKがインストールされているかどうかに興味がありました。

whereis Java

それは戻った:

Java: /usr/bin/Java

Javaプログラムを確認するためにパスに移動しました。

ls -l Java

返されたもの:

lrwxrwxrwx 1 root root 26 May 2016 10:52 Java -> /usr/Java/default/bin/Java

ただし、これまでのところ、Javaプログラムを実行すると、

Java
-bash: Java: command not found

Javaにはシンボリックリンクがありますが、/ usr/Java/default/bin/Javaは存在しません。Java(jdk )がインストールされているかどうかですが、私が見たものからはあまりわかりません。インストールされていない場合は、システムがJava/usr/bin/javaを返したのはなぜですか?

2
DaeYoung

システムがJavaを返した場合、インストールされていないと信じたいのですが:/ usr/bin/java?

whereisはシンボリックリンクを解決しません。そのため、/ usr/bin/Javaがまだ存在する場合、シンボリックリンクターゲットが壊れていても、Java: /usr/bin/Javaを返します。正しい結果を得るには、type -a Javaを使用することをお勧めします。シンボリックリンクターゲットOR非シンボリックソースファイル、両方が実行可能である必要があります(設定するにはchmod +x))。それ以外の場合、type -aコマンドは見つかりません。ファイルが存在します(typeは実行可能ファイルに関係なく引き続き返されます)。

だから、私は以下のように単純化することができます:

whereis:シンボリックリンクが壊れていたり、実行できない場合でも、戻り値が見つかりました。

タイプ:実行不可であっても見つかったリターン、シンボリックリンクが壊れている場合は見つからないリターン.

type -a:シンボリックリンクが壊れているか実行不可の場合、見つかりませんでした。

入力ファイルが存在しない場合、それらすべてはnot foundを返します。

したがって、私がアドバイスできるのは、JDKを再度インストールすることです。これは、「OpenJDK」よりも 「Oracle JDK」が優先される

良い記事は here にあります。

これはあなたができることです(あなたのシステムがx64であると仮定してください):

Sudo rpm -ivh jdk-8u91-linux-x64.rpm
Sudo rpm -ivh jdk-8u91-linux-x64-demos.rpm 

上記の8u91バージョンのバージョン番号は更新され続けるため、常に Oracle Webサイト にアクセスして最新バージョンを確認する必要があります。 JDKダウンロードボタンをクリックすると、この ページ に移動し、最新のバージョン番号と正しいファイル名が表示されます。

実際のリンクがここにあるドキュメントをダウンロードすることもできます page 、それを解凍します(JDKが/usr/Java/jdk1.8.0_91/にインストールされていると仮定します):

Sudo unzip jdk-8u91-docs-all.Zip -d /usr/Java/jdk1.8.0_91/ #optional

次に、この2つのコマンドを使用して、正しいjavacとJavaを選択します。私はあなたが1つのオプションしかないと信じています(私のサンプルはjdk1.8.0_74が最新の8u91ではないためです):

$ Sudo alternatives --config javac

There are 2 programs which provide 'javac'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/lib/jvm/Java-1.8.0-openjdk-1.8.0.65-3.b17.fc21.x86_64/bin/javac
   2           /usr/Java/jdk1.8.0_74/bin/javac

Enter to keep the current selection[+], or type selection number: 2
$
$ Sudo alternatives --config Java

There are 2 programs which provide 'Java'.

  Selection    Command
-----------------------------------------------
*  1           /usr/lib/jvm/Java-1.8.0-openjdk-1.8.0.65-3.b17.fc21.x86_64/jre/bin/Java
 + 2           /usr/Java/jdk1.8.0_74/jre/bin/Java

Enter to keep the current selection[+], or type selection number: 2
$ 
3
林果皞

Javaを指すようにAlternativesを構成する必要があるかもしれません。これは私のリンクで説明されています。

Oracleがopenjdk上にインストールされた状態でOracle Javaをインストールし続けることを試みたときに、すべてが正しくリンクされ、正しいバージョンのJavaが実行されていることを確認する必要があることに気付きました。

RPMシステムマシンを使用している場合、それを機能させるために以下のリンクの手順を使用しました。

OracleをインストールJava JDK CentOS

以下のJavaコマンドは、Alternativesが正しく設定されていることの検証として機能します。

Java -version

[root@somecomputer thebtm]# Java -version
Java version "1.8.0_77"
Java(TM) SE Runtime Environment (build 1.8.0_77-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)

もう1つのサイドノードは、すでにOracle Javaがインストールされていて、新しいJava rpmをダウンロードしてインストールした場合、新しいものを指すように代替を更新する必要があります。 Javaのバージョン

[root@somecomputer thebtm]# alternatives --config Java

There are 5 programs which provide 'Java'.

  Selection    Command
-----------------------------------------------
*  1           /usr/Java/jdk1.8.0_66/bin/Java
   2           /usr/Java/jdk1.8.0_66/jre/bin/Java
   3           /usr/Java/jre1.8.0_77/bin/Java
   4           /usr/Java/jdk1.8.0_77/jre/bin/Java
 + 5           /usr/Java/jre1.8.0_91/bin/Java

Enter to keep the current selection[+], or type selection number: 5
[root@somecomputer thebtm]# Java -version
Java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
1
thebtm