簡體   English   中英

Intellij JAVA_HOME 變量

[英]Intellij JAVA_HOME variable

我開始使用 Gradle 和 Intellij,但在配置 Gradle 的 JVM 時遇到問題。 當我開始一個新的 Gradle 項目時,我不允許將 JVM 定義為我的 JAVA_HOME 變量。 以下屏幕截圖顯示了正在發生的事情:

新的gradle項目

正如你所看到的,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)

有人可以弄清楚發生了什么? 謝謝!

有點違反直覺,但您必須首先為 Java 項目設置一個 SDK。 在 IntelliJ 歡迎屏幕的右下角,選擇“配置 > 項目默認值 > 項目結構”。

左側的 Project 選項卡將顯示您沒有選擇 SDK:

因此,您必須單擊下拉菜單右側的“新建...”按鈕並將其指向您的 JDK。 之后,您可以返回到導入屏幕,它應該填充您的 JAVA_HOME 變量,前提是您有這個設置。

問題是你的“項目 SDK”沒有! 通過單擊“新建...”添加“項目 SDK”並選擇 JDK 的路徑。 然后應該就OK了。

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

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

這里的問題是,雖然您的$JAVA_HOME是正確的,但您在錯誤的地方定義了它。

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

對此有兩種可能的解決方案:

  • 從 Bash 會話啟動 IntelliJ:打開終端並運行"/Applications/IntelliJ IDEA.app/Contents/MacOS/idea" 這個idea過程會繼承任何已經export的Bash環境變量。 (因為你確實export JAVA_HOME=… ,它有效!),或者,復雜的方式:
  • 設置適用於所有程序的全局環境變量,而不僅僅是 Bash 會話。 這比您想象的要復雜,例如在這里這里解釋。 你應該做的是運行

    /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放置任何內容。

如果您想讓 intellij 識別您的 JAVA_HOME,您可以執行以下操作之一:

  • 從終端 /Applications/IntelliJ IDEA 14.app/Contents/MacOS 啟動您的智能(這將選擇您的 bash 環境變量)
  • 通過執行添加登錄環境變量: launchctl setenv JAVA_HOME "/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home"

要直接回答您的問題,您可以在 ~/.bash_profile 中添加 launchctl 行

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

在我的情況下,我需要一個較低的 JRE,所以我不得不告訴 IntelliJ 在“平台設置”中使用不同的

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

右鍵單擊項目 -> 打開模塊設置 -> 單擊 SDK

在此處輸入圖片說明

選擇 Java 主目錄

在我的情況下,幫助卸載了 Android 插件 - Idea 一直困擾我設置 Android NDK 並且不讓我更改 Java 默認 SDK - 由於我不為 Android 開發,我可以將其刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM