web-dev-qa-db-ja.com

Ubuntuで$ Java_HOMEを設定または取得するシステム全体の方法?

Ubuntu自体が現在のJava_HOMEを見つけるためのシステム全体の方法を提供するのか、またはJava_HOMEを設定するための適切な場所があるのか​​と思います。

Mac OS Xはこれでうまくいきます。/usr/libexec/Java_homeコマンドは現在のJava_HOMEを返します。しかし、Ubuntuに対して、私が見つけた資料は常に、$Java_PATH~/.bash_profileに保存されている静的パスを指すように設定するように常に指示していました。

ただし、このアプローチにはいくつかの欠点があると思います。

  1. Javaが更新されると、ミニバージョン番号が変更され、静的パスが使用できなくなります。
  2. システムで使用されているJREをupdate-alternativesで変更した後、$Java_HOME.bash_profileを変更する必要があります。その余分な作業は面倒です。
  3. 一部の$Java_HOME必須プログラムは、.bash_profileをまったく認識していません。起動スクリプトで$Java_HOMEを設定する必要があるため、$Java_HOMEを取得する標準的で簡単な方法が私にとって重要であると思われます。

まあ、どんなアドバイスでも大歓迎です。ありがとう。

8
Jianwen W.

少しハッキーですが、この行を/etc/profileシステム全体に設定する場合:

export Java_HOME=$(dirname $(dirname $(readlink -e /usr/bin/javac)))
6
user13742

PAMによってセットアップされる/etc/environmentで環境変数を設定できます。マイナーリリースで変更されない/usr/lib/jvmにもシンボリックリンクがあるはずです。

Java_HOME=/usr/lib/jvm/Java-6-Sun
1
mgorven

User13742が承認したソリューションは、サーバーにJava=がインストールされていることを前提としています。これを多くのサーバーの集中スクリプトに追加すると、次のようなエラーが発生します。

dirname: missing operand
Try 'dirname --help' for more information.

これを回避し、サーバーにJava環境がある場合にのみJava_HOMEを設定するには、次のように少し拡張します。

if [ -f "$(which javac)" ]; then
    export Java_HOME=$(dirname $(dirname $(readlink -e $(which javac))))
fi

SimonBからの変更を組み込んで、whichを使用してインストール先を検索しました。

0
greggles

「Java」コマンドを呼び出せることが確かな場合、これでうまくいきませんか?

export Java_HOME=$(dirname $(Java -XshowSettings:properties -version 2>&1 | grep 'Java\.home' | awk '{ print $3 }'))
0
mlvnd

パスシステムプロファイルの設定

システムパスファイル/ etc/profileを編集します

Sudo gedit /etc/profile

最後に次の行を追加

Java_HOME=/usr/lib/jvm/jdk1.7.0
PATH=$PATH:$HOME/bin:$Java_HOME/bin
export Java_HOME
export JRE_HOME
export PATH

http://javaandme.com/ の場合、完全なインストールガイド。

0
Pratap Singh