web-dev-qa-db-ja.com

MAC OS X 10.11でJava_HOMEパスが表示されないのはなぜですか?

MAC OS X 10.11(El Capitan)でJavaアプリケーションを実行しようとしています。

このリンク を使用して、MAC OS X 10.11でJava_HOMEを設定しました。

次のコマンドを実行できます。
Javaバージョン
どのJava

ただし、MACのターミナルアプリに移動してecho $ Java_HOMEと入力しても、何も表示されません。何故ですか?それは私のJava_HOMEが正しく設定されていないということですか?

15
Andy

定義する場所

OK、まず第一に、Java_HOMEを設定するためにwhereを明確にする必要があります。

簡略化すると、~/.bashrcまたは~/bash_profileの2つのファイルで定義できます。 デフォルトによって、前者は「対話型の非ログインシェル」と呼ばれるものに対して実行され、後者は「ログインシェル」に対して使用されます。 「ログインシェル」はまさにあなたが期待するものです。コマンドライン経由でログイン後に起動されるシェルです。 「対話型の非ログインシェル」は、たとえばGUI内から起動されるシェルです。したがって、それに従って、exportステートメントを~/.bashrcに入れる必要があります。

サイドノート:OS Xの「ターミナル」アプリケーションは上記の両方のファイルを読み取りますが、これはデフォルトの動作ではないため、そのように扱われるべきではありません。そして、それが私が説明を書いた理由です。

何を定義する

シェルが開かれるたびに変数が設定されるように、~/.bashrcファイルのJava_HOMEをエクスポートする必要があります。

OS Xでは、Java開発キットとランタイム環境はかなり長い間/Library/Java/JavaVirtualMachines/の下に保存されています。

/Library/Java/JavaVirtualMachines/
├── jdk1.7.0_45.jdk
├── jdk1.8.0_20.jdk
├── jdk1.8.0_25.jdk
└── jdk1.8.0_51.jdk

サブフォルダーは次のようになります

jdk1.7.0_45.jdk/
└── Contents
    ├── Home
    ├── Info.plist
    └── MacOS

そして、私たちはそれを得ました。したがって、JDK 1.7.0_45を指す場合は、次のステートメントを.bashrcに入れます。

export Java_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home"

そのJavaバージョンの正しいバイナリが呼び出されることを確認するには、上記のステートメントの後に次を追加する必要があります。

export PATH=$Java_HOME/bin:$PATH
34
export Java_HOME=$(/usr/libexec/Java_home -v 1.8)

Java 8 ....元のリンクはここにあります Installing Java Mac OS X 10.10 Yosemite and 10.11 Elキャピタン

しかし、受け入れられた答えも機能します。更新後にパスの変更に注意するだけです。

7
SDen

OSXでJava_HOMEを設定する方法に関する多くの回答がありますが、Java_HOMEの設定が必要な場合、質問への回答を見つけるのは困難です。

なぜですか?Java_HOMEが正しく設定されていないということですか?

OSXでは、Java_HOME環境変数の設定はオプションです。 JREおよびJDKインストーラーは、Java_HOMEの設定を提供しません。したがって、Java_HOMEが設定されていなくても問題ありません。

2
chw1k

何らかの理由でjdk 1.6を使用したい場合、Appleはサポートを停止しました。MacOSの更新後に削除されます。このページからjdk 1.6を入手できます。 https://support.Apple.com/kb/DL1572?locale=zh_CN

Jdk 1.6を再度インストールした後、〜/ .bash_profileなどのシステム変数$ Java_HOMEの正しいディレクトリをエクスポートすることを忘れないでください。私にとっては、「/ Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home」です。 。

0
Willie Z