問題
インストール手順に従って、Oracle の JDK/JRE が Linux マシンにインストールされています。 「java」コマンドは、インストールされている JVM を実行しません。予期しない Java ランタイム環境が見つかった場合、Java アプリケーションは実行に失敗する可能性があります。
Red Hat サーバーの例:
$ java -version java version "1.6.0_17" OpenJDK Runtime Environment (IcedTea6 1.7.4) (rhel-1.21.b17.el6-x86_64) OpenJDK 64-Bit Server VM (build 14.0-b16, mixed mode)
免責事項 注:この記事で使用されているディレクトリとパスは、例を構成する架空のサンプル名を表しています。実際のコードとの類似性はまったくの偶然であり、その他の意図はありません。
解決策
インストール手順に従って、Oracle の新しい JDK/JRE がインストールされています。 Red Hat サーバーの例:
# rpm -ivh jdk-7u6-linux-x64.rpm
コマンド「java」は通常、/usr/bin 内のシンボリック リンクであり、実際の Java 実行可能ファイルを (直接的または間接的に) 指しています。通常、/usr/bin は環境変数 PATH の最初のエントリの 1 つであるため、Java が起動された場合、通常は /usr/bin/java が最初に検出されます。
次の考えられる解決策について、JDK を /usr/java/jdk1.7.0_06/ にインストールしたと仮定しましょう。
解決策 1:PATH を変更する
PATH 環境変数を変更して、他の JRE が見つかる前に新しい Oracle JRE/JDK が見つかるようにします。
例:
$ export PATH=/usr/java/jdk1.7.0_06/bin:$PATH
$ java -version java version "1.7.0_06" Java(TM) SE Runtime Environment (build 1.7.0_06-b24) Java HotSpot(TM) 64-Bit Server VM (build 23.2-b09, mixed mode)
解決策 2:絶対パスを使用する
Java アプリケーションを実行するには、新しくインストールされた Oracle JRE/JDK への完全な絶対パスを使用してください。
例:
$ /usr/java/jdk1.7.0_06/bin/java -version java version "1.7.0_06" Java(TM) SE Runtime Environment (build 1.7.0_06-b24) Java HotSpot(TM) 64-Bit Server VM (build 23.2-b09, mixed mode)
解決策 3:update-alternatives を使用する
update-alternatives というコマンドを使用します インストールしたばかりの Oracle JRE/JDK の場所を Linux に伝えるためです。
注意 :/usr/bin/java や /etc/alternatives/java などのシンボリック リンクを手動で修正すると、update-alternatives コマンドが正しくない値を表示したり、起動に失敗したりする可能性があります。したがって、必要なシンボリック リンクを手動で変更する代わりに、update-alternatives コマンドを使用して目的のシンボリック リンクをインストールおよび構成することをお勧めします。RedHat では「su」を使用し、Ubuntu では「sudo」を使用します。
$ su - # update-alternatives --install "/usr/bin/java" "java" "/usr/java/jdk1.7.0_06/bin/java" 1 # update-alternatives --config java There are 3 programs which provide 'java'. Selection Command ----------------------------------------------- 1 /usr/lib/jvm/jre-1.5.0-gcj/bin/java *+ 2 /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java 3 /usr/java/jdk1.7.0_06/bin/java Enter to keep the current selection[+], or type selection number: 3 # exit
$ java -version java version "1.7.0_06" Java(TM) SE Runtime Environment (build 1.7.0_06-b24) Java HotSpot(TM) 64-Bit Server VM (build 23.2-b09, mixed mode)
詳細については、update-alternatives の man ページを参照してください。
$ man update-alternatives