web-dev-qa-db-ja.com

Debian / UbuntuでJava_HOMEを決定する方法は?

Ubuntuでは、同時に複数のJVMを使用できます。デフォルトはupdate-alternativesで選択されています。ただし、これは debianポリシー のため、Java_HOME環境変数を設定しません。

Javaアプリケーションを起動するランチャースクリプト(bash)を書いています。これはJavaアプリケーションにはJava_HOME環境変数が必要です。そのため、 update-alternatives?によって現在選択されているJVMのパスを取得します

96
Witek

JREの場合、次のようなものがうまくいくはずです。

Java_HOME=$(readlink -f /usr/bin/Java | sed "s:bin/Java::")
138
danadam

danadamのソリューションは、必要に応じてJDK(つまりJREではない)パスを取得するために簡単に採用できます。

Java_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")
  • JDKに含まれている(JREではなく)javac Javaコンパイラ)を探します。
  • 末尾に/はありません(s:bin ...の代わりにsed s:/ bin ...で取り除かれます)
44
rsaddey

export Java_HOME=$(dirname $(dirname $(readlink -f /usr/bin/Java)))

.bashrcは私にとって便利でした。

12
David

それで、あなたはこのコマンドがあなたのために何もしないと言っているのですか?

Sudo update-alternatives --config Java 
9
djangofan

私はJavaをインストールしました

Sudo apt-get install openjdk-7-jre-headless

場所を見つけるために

ls -al /etc/alternatives/Java
3
prule

ダナダムズの答えの延長として:

まず、2番目のJava JREを3番目のJavaオプションとして、優先度「3」としてインストールします。

Sudo alternatives --install /usr/lib/jvm/jre jre /opt/IBM/Java/jre/bin/Java 3

次に、それらを一覧表示できます。

update-alternatives --list Java

これを使用して、代替を手動で設定できます。

Sudo alternatives --config Java /opt/IBM/Java/jre/bin/Java

その後、スクリプトは次のようにその場で設定できます。

Sudo alternatives --set Java /opt/IBM/Java/jre/bin/Java
JAVA_HOME=$(readlink -f /usr/bin/Java | sed "s:bin/Java::")

これにより、「sed」コマンドの動作がわかりやすくなります。 javawやjavacなどのリンクも設定する必要がありますが、それぞれ個別に設定します。

2
djangofan

Javaが_update-alternatives_で構成されているか、手動でPATH変数に追加されている場合、ハードコードされた_"/usr/bin/Java"_は必要ありません。bashrcでこのソリューションを使用します。

export Java_HOME=$(readlink -m $(which Java)/../..)

1
Freddy

少し前に、Java Webサイトから最新のJRE/JDKをインストールする方法について、Ubuntuフォーラムでチュートリアルを作成しました。また、JREを追加して、システム全体で有効にする方法についても説明します/ JDKの場所をPATH変数に設定します。必要に応じて、トピックの最後に記載されているスクリプトにJava_HOMEを追加することもできます。

確認してください: http://ubuntuforums.org/showthread.php?t=14371

1
EarthMind