2015-06-21 43 views
51

我開始使用Gradle和Intellij,但我有問題來配置Gradle的JVM。 當我啓動一個新的Gradle項目時,我不允許將JVM定義爲我的JAVA_HOME變量。下面的屏幕截圖顯示發生了什麼:Intellij 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)

有人能弄清楚發生什麼事? 謝謝!

+0

您是否將Java配置爲IntelliJ中的SDK之一?如果你這樣做,你不明確要求設置JAVA_HOME。 – Makoto

回答

38

問題是你的「Project SDK」沒有!點擊「新建...」添加一個「項目SDK」,然後選擇JDK的路徑。然後它應該是確定的。

+0

謝謝。似乎無法找到關於此的任何文檔。 – honyovk

+0

@honyovk是的,它真的很奇怪,我花了大約一個小時試圖做到這一點,因爲我的JAVA_HOME設置正確,我刪除了舊版本......再次感謝Harry.Chen –

+0

實際上這真的很奇怪。我按照你的步驟,點擊下一個按鈕,並在點擊取消按鈕的'GroupId,ArtifactId和Version'屏幕上。回到第一個IDE屏幕,我點擊打開,並正確配置了Gradle JVM。 –

86

位反直觀,但您必須先爲Java項目設置SDK。在IntelliJ歡迎屏幕的右下角,選擇'配置>項目默認值>項目結構'。

左側的項目選項卡將顯示你沒有選擇SDK:

因此,你必須點擊下拉的右側的「新建...」按鈕,並將其指向你的JDK 。之後,您可以返回到導入屏幕,並且應該使用JAVA_HOME變量填充它,前提是您已經設置了該設置。

+1

回覆:在IntelliJ歡迎屏幕的右下角 - 我可以進入「歡迎屏幕」嗎?從一個項目的中間? – RichMeister

+0

@RichMeister「項目結構」也在'File'菜單中,其快捷方式爲'⌘-;' –

+0

希望有些IntelliJ開發人員正在觀看此主題並提供一些體面的錯誤消息,以避免爲這種模糊的設置拉扯頭髮? – Sid

7

如果你想有你的JAVA_HOME通過的IntelliJ的認可,您可以執行下列操作之一:

  • 開始從終端/應用/ IntelliJ IDEA的14.app/Contents/MacOS您的IntelliJ(這將挑選你的bash ENV變量)
  • 添加登錄環境變量通過執行: launchctl setenv JAVA_HOME "/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home"

直接回答你的問題,你可以在你的〜/ .bash_profile中

添加launchctl線

正如其他人所回答的,您可以通過在項目結構中設置SDK來忽略JAVA_HOME。

5

在我的情況我需要較低的JRE,所以我不得不告訴的IntelliJ使用的不同的一箇中的 「平臺設置」

  • 平臺設置>的SDK( + ;
  • 點擊+按鈕添加一個新的SDK(或重命名並加載現有的一個)
  • 從相應的SDK中選擇/ Contents/Home目錄
    (即/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home)
+1

謝謝,解決了這個問題。 – Suresh

+0

這也爲我解決了這個問題,謝謝 – chinabuffet

2

到目前爲止,沒有人回答的實際問題。

有人可以弄清楚發生了什麼?

這裏的問題是,雖然$JAVA_HOMEis correct,你在錯誤的地方定義它

  • 當您打開終端並啓動Bash會話時,它將讀取~/.bash_profile文件。因此,當你輸入echo $JAVA_HOME時,它將返回在那裏設置的值。
  • 當您直接啓動IntelliJ時,它會而不是~/.bash_profile ......爲什麼要這樣呢?所以對於IntelliJ,這個變量沒有設置。

有這兩個可能的解決方案:

  • 啓動的IntelliJ從bash命令:打開一個終端,運行"/Applications/IntelliJ IDEA.app/Contents/MacOS/idea"。進程將繼承Bash的任何環境變量,這些變量的編號爲export。 (因爲你做了export JAVA_HOME=…,它工作!),或者,複雜的方式:
  • 設置適用於所有程序的全局環境變量,而不僅僅是Bash會話。這比您想象的要複雜得多,例如可以解釋爲herehere。你應該做的是運行

    /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

+0

請注意,除了從命令行啓動外,此方法與迄今爲止提到的所有方法一樣,在Java升級時不會動態更新。在創建文件時,$(/ usr/libexec/java_home)位僅計算一次。 –