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を返したのはなぜですか?
システムが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
$
Javaを指すようにAlternativesを構成する必要があるかもしれません。これは私のリンクで説明されています。
Oracleがopenjdk上にインストールされた状態でOracle Javaをインストールし続けることを試みたときに、すべてが正しくリンクされ、正しいバージョンのJavaが実行されていることを確認する必要があることに気付きました。
RPMシステムマシンを使用している場合、それを機能させるために以下のリンクの手順を使用しました。
以下の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)