JAVA_HOMEとupdate-alternativesの違いは何ですか?


12

私は、FedoraボックスのデフォルトJavaとしてOpenJDK Javaランタイムを実行し、Android開発、つまりAndroidバンドルからAndroid SDKマネージャー、Android Studio、Eclipseを実行するためにOracle JDK 6を使用する最良の方法を見つけようとしています。

OpenJDK JavaランタイムをFedoraリポジトリからインストールしました。Fedoraリポジトリには、次のようなセットアップの選択肢があります。

[donnie@fedora ~]$ alternatives --list | grep java
jre_openjdk             auto    /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.5.1.fc20.x86_64/jre
jre_1.7.0               auto    /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.5.1.fc20.x86_64/jre
java                    auto    /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.5.1.fc20.x86_64/jre/bin/java
libjavaplugin.so.x86_64 auto    /usr/lib64/IcedTeaPlugin.so

Oracleが提供するrpmを使用してOracle JDK 6をインストールしました。

Android BundleとStudioでJAVA_HOMEを使用して、Oracle JDKで実行するには、次のように貼り付けます.bashrc

export JAVA_HOME=/usr/java/jdk1.6.0_45/
export PATH=$JAVA_HOME/bin:$PATH

ChromeはまだOpenJDKを使用していることに気付きました(まだプラグインをリンクする必要があるため)。

JAVA_HOMEと代替手段の使用の違いは何ですか?

回答:


11

代替案

Alternativesは、ツールの制御下にあるリンクを使用して、インストールされたソフトウェアの場所を管理するalternativesツールです。

これらのリンクは最終的に管理され/etc/alternatives、中間リンク$PATHは通常ディレクトリの下に作成されます/usr/bin

$ ls -l /usr/bin/java
lrwxrwxrwx. 1 root root 22 Feb 24 17:36 /usr/bin/java -> /etc/alternatives/java

$ ls -l /etc/alternatives/java
lrwxrwxrwx. 1 root root 73 Feb 24 17:36 /etc/alternatives/java -> /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.5.0.fc19.x86_64/jre/bin/java

$ JAVA_HOME

$JAVA_HOME環境変数を使用して調べるようにソフトウェアに指示できる場所です。に追加する$PATHだけで、実行可能ファイルがに追加さ$JAVA_HOME/binれます$PATH。これは、特定のアプリケーションで必要になる場合があります。

2つのメカニズムは関連していますが、一緒に使用することも、互いに独立して使用することもできます。実際には、どのアプリケーションが望ましいかはJavaアプリケーションによって異なります。

私がやること

通常$JAVA_HOME、いくつかのGUIアプリケーションに使用しますが、一般的には、たとえばJetty、Tomcat、またはJBOSSを使用するサーバーインストールにのみ使用します。

これらのインストールではalternatives、を設定する前にJavaインストールの管理に引き続き使用します$JAVA_HOME。Javaを複数インストールする必要がある場合に、この方法で行うのが好きです。

別の方法では、特定のツールでJavaの1つのインストールを使用し、他のツールでまったく異なるJavaを使用できます。

参照資料


プレゼントは、代替手段を使用して、Javaのさまざまなコンポーネントを使用できることです。例えば、代替を設定することができjava、およびjavac他方で異なるJDKからJAVA_HOME=JAVALOCATIONポイントになるjavajavacjavawsjavajavacおよびjavawsJAVALOCATIONそれぞれ。
スディールハンガー14

この質問をした理由は、OpenJDKをデフォルトのJavaランタイムとして使用し、Android Studio、Eclipse、およびSDK ManagerでOracle JDKを使用する方法です。これらの3つのプログラムをOracle JDKで実行するには、更新された場合に壊れる可能性のある起動スクリプトをハード編集します。私は、JDKを取得するためにAndroid Studioで使用される、またはにSTUDIO_JDK追加できるのようなより汎用的なものを探していましたが、Androidバンドル(EclipseおよびSDK Manager)はそれを尊重しません。~/.profile~/.bashrc
スディールハンガー14

@donniezazen-ええSTUDIO_JDK、カスタムのものです。私はそれらのツールのための代替手段を使用JAVA_HOMEして、/usr/binで管理される経路に設定するでしょうalternatives。アップグレードが実行されると、alternatives必要なのは変更だけです。
slm

あなたが何を提案しているのか分かりません。両方alternativesを指すJAVA_HOMEと言う/usr/bin/java。また、JAVA_HOMEオーバーライドのようalternativesです。
スディールハンガー14

@donniezazen-yesは代替手段を使用してJAVAインストールを管理し、それを使用しJAVA_HOMEてを指定し/usr/binます。あなたは正しい、JAVA_HOMEから独立して操作することができますalternatives
slm
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.