web-dev-qa-db-ja.com

Intellij Java_HOME変数

GradleとIntellijを使い始めましたが、GradleのJVMを構成するのに問題があります。新しいGradleプロジェクトを開始するとき、JVMをJava_HOME変数として定義することはできません。次のスクリーンショットは、何が起こっているかを示しています。

new gradle project

ご覧のとおり、IntellijはJava_HOME変数が定義されていないと言っていますが、echo $Java_HOMEと入力すると、Javaディレクトリを取得できます。私の場合は/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home

私の./~bash_profileは次のように構成されています:export Java_HOME=$(/usr/libexec/Java_home)

誰かが何が起こっているのか理解できますか?ありがとうございました!

58
user2568889

問題は、あなたの「プロジェクトSDK」がどれでもないということです! 「新規...」をクリックして「プロジェクトSDK」を追加し、JDKのパスを選択します。そして、それは問題ないはずです。

45
Harry.Chen

直感に反するビットですが、最初にJavaプロジェクト用のSDKをセットアップする必要があります。 IntelliJようこそ画面の右下で、「構成」>「プロジェクトのデフォルト」>「プロジェクト構造」を選択します。

左側の[プロジェクト]タブには、SDKが選択されていないことが表示されます。

したがって、ドロップダウンの右側にある[新規...]ボタンをクリックして、JDKをポイントする必要があります。その後、インポート画面に戻り、Java_HOME変数を設定する必要があります(このセットがあれば)。

93
RMcGuigan

Java_HOMEをintellijに認識させたい場合は、次のいずれかを実行できます。

  • ターミナル/ Applications/IntelliJ IDEA 14.app/Contents/MacOSからintellijを起動します(これにより、bash環境変数が選択されます)
  • 実行してログイン環境変数を追加します:launchctl setenv Java_HOME "/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home"

質問に直接回答するには、〜/ .bash_profileにlaunchctl行を追加します。

他の人が答えたように、プロジェクト構造でSDKを設定することでJava_HOMEを無視できます。

8
gk0

私の場合、より低いJREが必要だったため、IntelliJに「プラットフォーム設定」で別のJREを使用するように指示する必要がありました。

  • プラットフォーム設定> SDK( +; )
  • クリック + 新しいSDKを追加する(または既存のSDKの名前を変更して読み込む)ボタン
  • 適切なSDKから/ Contents/Homeディレクトリを選択します
    (つまり/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home)
6
Shanimal

これまでのところ、実際の質問には誰も回答していません。

誰かが何が起こっているのか理解できますか?

ここでの問題は、$Java_HOME正しいvalueながら、それを定義した間違った場所に

  • ターミナルを開いてBashセッションを起動すると、~/.bash_profileファイルが読み取られます。したがって、echo $Java_HOMEと入力すると、そこに設定されている値が返されます。
  • IntelliJを直接起動すると、not~/.bash_profileを読み取ります...なぜそうする必要があるのですか?したがって、IntelliJには、この変数は設定されていません。

これには2つの解決策があります。

  • BashセッションからIntelliJを起動します。ターミナルを開き、"/Applications/IntelliJ IDEA.app/Contents/MacOS/idea"を実行します。 ideaプロセスは、exportedされたBashの環境変数を継承します。 (export Java_HOME=…を実行したので、動作します!)、または洗練された方法:
  • Bashセッションだけでなく、すべてのプログラムに適用されるグローバル環境変数を設定します。これは思っているよりも複雑で、たとえば here および here で説明されています。あなたがすべきことは実行です

    /bin/launchctl setenv Java_HOME $(/usr/libexec/Java_home)
    

    ただし、これは再起動後にリセットされます。これがブートごとに実行されることを確認するには、実行します

    cat << EOF > ~/Library/LaunchAgents/setenv.Java_HOME.plist
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
        "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
      <plist version="1.0">
      <dict>
        <key>Label</key>
        <string>setenv.Java_HOME</string>
        <key>ProgramArguments</key>
        <array>
          <string>/bin/launchctl</string>
          <string>setenv</string>
          <string>Java_HOME</string>
          <string>$(/usr/libexec/Java_home)</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>ServiceIPC</key>
        <false/>
      </dict>
    </plist>
    EOF
    

    これは端末プロセスにも影響するため、~/.bash_profileに何かを入れる必要はありません。

5
ThomasR