GNU/Linux >> Linux の 問題 >  >> Linux

「java」コマンドは、インストールされている JVM を実行しません

問題

インストール手順に従って、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


Linux
  1. update-alternatives:コマンドが見つかりません

  2. コマンドラインでJavaパッケージを作る

  3. npmコマンド「serve」が見つかりませんが、インストールされています

  1. 組み込みコマンドとそうでないコマンドの違いは?

  2. エイリアスによってシャドウされているコマンドを実行しますか?

  3. ps コマンドはどのように機能しますか?

  1. コマンドShufファイル>ファイルは空のファイルを残しますが、同様のコマンドは残しませんか?

  2. カットの逆コマンドは存在しますか?

  3. ティーコマンドはどのように機能しますか?