![java -version が JAVA_HOME で定義されているバージョンとは異なるバージョンを返すのはなぜですか?](https://rvso.com/image/1331450/java%20-version%20%E3%81%8C%20JAVA_HOME%20%E3%81%A7%E5%AE%9A%E7%BE%A9%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%A8%E3%81%AF%E7%95%B0%E3%81%AA%E3%82%8B%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%92%E8%BF%94%E3%81%99%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
JAVA_HOME
Ubuntu OS で設定しようとしています。ファイルをコピーjdk 1.7
し/usr/lib/jvm
て設定しましたJAVA_HOME
。/etc/profile
フォルダの内容は/usr/lib/jvm
次のとおりです。
shekhar@ubuntu:~$ ls /usr/lib/jvm/
default-java java-1.6.0-openjdk java-6-openjdk java-6-openjdk-i386 jdk1.7.0_01
java-1.5.0-gcj-4.6 java-1.6.0-openjdk-i386 java-6-openjdk-common java-7-openjdk-i386
ファイルの最後の数行は/etc/profile
次のとおりです。
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_01
export PATH=$PATH:$JAVA_HOME/bin
これをすべて完了した後、コマンドを実行すると、java -version
次の出力が得られます。
shekhar@ubuntu:~$ java -version
java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.4) (6b24-1.11.4-1ubuntu0.12.04.1)
OpenJDK Server VM (build 20.0-b12, mixed mode)
コマンドを実行すると、ls -lah
次の出力が得られます。
shekhar@ubuntu:~$ ls -lah /usr/bin/java
lrwxrwxrwx 1 root root 22 Sep 29 09:58 /usr/bin/java -> /etc/alternatives/java
shekhar@ubuntu:~$ ls -lah /etc/alternatives/java
lrwxrwxrwx 1 root root 45 Sep 29 09:58 /etc/alternatives/java -> /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java
何が足りないのか誰か教えてもらえませんか? Ubuntu がまだ open jdk を指していて、jdk 7 を指していないのはなぜですか?
追伸:私は見たこの類似の質問とその回答がありますが、その質問は Windows OS に関連しており、Ubuntu に関するものではないため、Ubuntu に関する同様の質問を再投稿します。
答え1
JAVA_HOME 環境変数を設定し、それを使用して PATH を設定しました。ただし、設定したパスも既存のパスから構成されます。基本的には、既存のパスに何か他のものを追加しただけです。
JDK1.7 へのパスはパスの最後に追加されます。コマンド ラインで「java --version」と入力すると、システムはパスを最初から最後まで検索し、「java」コマンドを含むパスを見つけます。したがって、表示されるのは他の Java バージョンのバージョン出力です。
私が Ubuntu で通常行うことは、パスを確認することです。
echo $PATH
そして、先頭付近で JVM パスの可能性を探します。その時点で、これを修正するためのいくつかのオプションがあります。
システムを新しい Java パスにポイントするシンボリック リンクを作成します。
古い Java バージョンを削除し、パスから削除します。
私はオプション 2 を選択します。不要なものを処分する方が混乱が少なくなります。
答え2
私も同じ問題を抱えていましたが、答えは PATH に隠されています:
「$ env | grep java」を実行すると、次のように表示されます。
PATH=/u01/app/oracle/product/11.2.0/xe/bin:/home/rivaldo/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/java/jdk1.6.0_14/bin:/home/rivaldo/bin/eclipse.JEE.Kepler.64
JAVA_HOME=/usr/local/java/jdk1.6.0_14
JDK_HOME=/usr/local/java/jdk1.6.0_14
しかし、「java -version」を実行すると、次の内容が表示されます。
java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode)
PATH に「/java/jdk1.6.0_14/bin」の前に「/usr/bin」があることがわかり、「ll /usr/bin | grep java」を実行すると次のようになりました。
lrwxrwxrwx 1 root root 39 Jul 31 08:29 /etc/alternatives/java -> /usr/lib/jvm/java-7-oracle/jre/bin/java*
シンボルリンクを正しいものに変更したら問題は解決しました。パスの順序を変更することもできます。
から
export PATH=$PATH:$JAVA_HOME/bin
に
export PATH=$JAVA_HOME/bin:$PATH
答え3
私自身、Ubuntu 12.04 の新規インストールでまったく同じ種類の問題に直面していました。私がしなければならなかったのは、次のコマンドを使用して特定のパッケージをアンインストールすることだけでした。
sudo apt-get remove openjdk-6-jre-headless
これにより、/etc/alternativesのリンクが削除され、インストールされたJava 1.7に更新されました。
jmort253 の回答のポイント 2 がこれで完了するので、共有したいと思います。