Javaのバージョンはいくつでもインストールできます。
セットアップが既存のJavaインストールを参照する可能性があるため、などのローカル環境変数を変更することは危険です。JAVA_HOME
これは、「プラットフォームに依存する問題」とは何の関係もありません。;)
スクリプトは自分自身を起動することに依存している可能性がJAVA_HOME
あるため、これも、新しいJavaインストールを変更するJAVA_HOME
のは悲惨です。これらのスクリプトはすべて、互換性がない可能性のある新しいJVMを使用して突然起動する必要があります。
さらに、$JAVA_HOME/bin
またはパスを設定することにより、PATH変数をあまり使用せずに、使用するJavaのバージョンに%JAVA_HOME%/bin
動的に変更できます。JAVA_HOME
Michael Borgwardtは、コメントで興味深いフォローアップの質問をしました
それでも、これは、以前に設定されていないのにインストーラーがJAVA_HOMEを設定しない理由を説明していません。
答えは簡単です。
セットアップは、スクリプトがすでに依存しているかどうかを知ることができませJAVA_HOME
ん。
意味:一部のスクリプトはJAVA_HOME
値をテストできます。設定されていない場合は、他の場所にインストールされている別のJVMを参照します(「インストール」によって参照できるのは「コピー済み」のみであることを忘れないでください。JDK/JREは常に設定)
を設定JAVA_HOME
すると、一部のスクリプトのデフォルトの動作が中断される可能性があります。
env varが設定されていないことに依存する架空のスクリプトを邪魔したくないのは、私には無意味に妄想的に聞こえます-スクリプトがそれを行う場合、インストール時に別のJVMを使用することを明らかに望んでいます-それを回避する理由はありません。
うーん...甘い。日常的に大規模な展開の問題に対処するために(私の店の内部アプリケーションの場合)、私はあなたに保証することができます:それは非常に正気の「パラノイド」扱いです。
(非常に)大規模なユーザーのセットにデプロイする場合、そのプラットフォームと構成について何も想定したくありません。「明らかにWANTS」は、私が敢えてしない(または私の電話をあなたの電話にリダイレクトする;)、そしてあなたが怒った電話を処理するという仮定です。
たとえば、sunからの1.4.2 JVM(JAVA_HOMEは開発プラットフォームに設定されておらず、デフォルトのパスはスクリプトに直接設定されています)、またはJRockitからの1.4.2(JAVA_HOME
意図されたターゲットであるため、設定されています)で起動するスクリプトが多数あります。統合、プリプロダクション、およびプロダクションプラットフォームについて)。
ただし、Eclipseの起動に使用するため、新しいJDK1.6.xを定期的にインストールします。
それらのスクリプトがそれらのJAVA_HOME
セットを必要としていると仮定します...そして何ももう機能しません。
... ロバート・グラントがこの現場の批評家にしたのは:
1つの特定のバージョンを必要とするスクリプトについて説明していますが、それでもグローバルJAVA_HOMEを確認してください。それはひどく考え抜かれたスクリプトです。
それは真実かもしれないしそうでないかもしれませんが、それはまた私のポイントを正確に示しています:
「あなたはいかなる仮定もしたくない」:彼らのプラットフォーム/設定に関する仮定も、彼らの「ベストプラクティス」に関する仮定もありません。
前者は偏執的に聞こえるかもしれませんが、後者は明白な常識です。ユーザーが自分のスクリプトを「正しく」考えているので、製品(ここではJDKセットアップ)がユーザーの環境に何も影響を与えないと考えるのは非常識です。
GvSの提案:
または、それを実行するオプションがあり、デフォルトで無効になっている可能性があります
これは、セットアップ画面に含める別のオプションを意味します。このオプションは、ユーザーが注意深く確認する必要があり、ユーザーが自分が何をしているのかを知っていると思って選択した場合でも、意図しない結果をもたらす可能性があります...
それは単にそれだけの価値はありません。