私はrhel VMを立てました。 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を返すのですか?
答え1
私はそれがインストールされていないと信じたいと思います。それでは、なぜシステムはjava:/ usr / bin / javaを返すのですか?
whereis
シンボリックリンクは解決されません。したがって、/ usr / bin / javaがまだ存在している場合は、シンボリックリンクターゲットが破損しても返されます。正しい結果を得るためにjava: /usr/bin/java
使用することをお勧めします。type -a java
シンボリックリンクターゲットまたはシンボリックリンクではないソースファイルは両方とも実行可能である必要があります(chmod +x
設定するには)。それtype -a
以外の場合、ファイルが存在してもコマンドは見つかりません(type
実行可能かどうかにかかわらずまだ返されます)。
したがって、次のように単純化できます。
whereis:シンボリックリンクが壊れているか実行できない場合でも返されます。
タイプ:実行可能でない場合でも「発見済み」を返し、シンボリックリンクが失われた場合は「見つかりません」を返します。
type -a:シンボリックリンクが破損しているか実行できない場合は見つかりませんを返します。
入力ファイルが存在しない場合は、これらすべてが見つからないことを返します。
だから私が提案できるのはJDKを再インストールすることです。「Oracle JDK」は「OpenJDK」よりも優れています。。
良い記事を見つけることができますここ。
次のことができます(システムがx64であると仮定)。
sudo rpm -ivh jdk-8u91-linux-x64.rpm
sudo rpm -ivh jdk-8u91-linux-x64-demos.rpm
バージョン番号は次のとおりです。8u91上記のバージョンは絶えず更新されますので、頻繁に訪問してくださいOracle Webサイト最新バージョンをご覧ください。カチッという音JDKのダウンロードボタンがこちらに行きます。ページ最新バージョン番号と正しいファイル名が表示されます。
文書をダウンロードすることもできます。実際のリンクはここにあります。ページ、そして解凍した(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つのオプションしかないと思います(この例では私が最新の8u91ではないのでjdk1.8.0_74を示しています)。
$ 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
$
答え2
私のリンクに記載されているJavaを指すように代替を設定する必要があるかもしれません。
openjdkにOracle Javaをインストールしようとすると、すべてが正しく接続され、正しいバージョンのJavaが実行されていることを確認する必要があることがわかりました。
RPMシステムシステムを使用している場合は、以下のリンクの手順を使用して操作しました。
次のJavaコマンドは、選択肢が正しく設定されていることを確認します。
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)
別の側面は、すでに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)