RedHat Linuxシステムに新しいJREをインストールしました。
lsb_release -i -r
Distributor ID: CentOS
Release: 6.5
必要なJavaインストールへのシンボリックリンクを更新しました。
ls -l /usr/bin/java
lrwxrwxrwx. 1 root root 21 Jul 21 16:27 /usr/bin/java -> /usr/java/jre1.8.0_51
ls -l /usr/java/latest
lrwxrwxrwx. 1 root root 21 Jul 21 15:34 /usr/java/latest -> /usr/java/jre1.8.0_51
ls -l /etc/alternatives/java
lrwxrwxrwx. 1 root root 20 Jul 21 17:42 /etc/alternatives/java -> /usr/java/glassfish4
しかし、今実行すると、次のようになります。
java -version
-bash: java: command not found
環境変数:
env
...
JAVA_HOME=/usr/java/latest
...
だから私は.bashrcに次の行を追加しました。
export PATH="$PATH:$JAVA_HOME"
しかし、まだ得ることができるもの:
java -version
-bash: java: command not found
解決済み - bashrcの正しい行:
export PATH=$PATH:/usr/java/jre1.8.0_51/bin/
理由はわかりませんが、シンボリックリンクを指す環境変数を使用すると、export PATH="$PATH:$JAVA_HOME"
正しく解決されても機能しません。
ls -l /usr/java/latest
lrwxrwxrwx. 1 root root 21 Jul 21 15:34 /usr/java/latest -> /usr/java/jre1.8.0_51
なぜか本当に知りたいです。
答え1
うまくいかない理由は、とは何の関係もない$JAVA_HOME
からです。バイナリ(、など)はすべてディレクトリ自体ではありません。$JAVA_HOME
$JAVA_HOME/bin
java
javac
javaws
bin
$JAVA_HOME
$JAVA_HOME
あなたの質問への作業パスはを指します/usr/java/jre1.8.0_51/bin
。変数はJAVA_HOME
を指し、/usr/java/latest
これへのシンボリックリンクです/usr/java/jre1.8.0_51
。ここは明らかに同じ場所ではありません。
使用する場合
export PATH="$PATH:$JAVA_HOME/bin"
動作します。