Intellij JAVA_HOME变量

时间:2015-06-21 00:16:20

标签: java intellij-idea

我开始使用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)

有人可以知道发生了什么事吗? 谢谢!

6 个答案:

答案 0 :(得分:91)

有点反直觉,但您必须首先为Java项目设置SDK。在IntelliJ欢迎屏幕的右下角,选择'配置>项目默认值>项目结构'。

左侧的Project选项卡将显示您没有选择SDK:

因此,您必须单击下拉列表右侧的“新建...”按钮并将其指向JDK。之后,您可以返回导入屏幕,并且应该使用您的JAVA_HOME变量进行填充,只要您拥有此设置即可。

答案 1 :(得分:42)

问题是你的" Project SDK"没有!添加一个" Project SDK"点击"新..."并选择JDK的路径。然后应该没问题。

答案 2 :(得分:8)

如果您想通过intellij识别您的JAVA_HOME,可以执行以下操作之一:

  • 从终端启动你的intellij / Applications / IntelliJ IDEA 14.app/Contents/MacOS(这将选择你的bash env变量)
  • 执行以下命令添加登录env变量: launchctl setenv JAVA_HOME "/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home"

要直接回答您的问题,您可以在〜/ .bash_profile中添加launchctl行

正如其他人已经回答的那样,您可以通过在项目结构中设置SDK来忽略JAVA_HOME。

答案 3 :(得分:6)

In my case I needed a lower JRE, so I had to tell IntelliJ to use a different one in "Platform Settings"

  • Platform Settings > SDKs ( +; )
  • Click the + button to add a new SDK (or rename and load an existing one)
  • Choose the /Contents/Home directory from the appropriate SDK
    (i.e. /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home)

答案 4 :(得分:5)

到目前为止,还没有人回答实际问题。

  

有人可以知道发生了什么事吗?

这里的问题是,当您$JAVA_HOME is correct时,您将其定义为在错误的位置

  • 当您打开终端并启动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会话。这比您想象的要复杂得多,并且例如解释为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中添加任何内容。

答案 5 :(得分:0)

右键点击项目->打开模块设置->点击SDK的

enter image description here

选择 Java 主目录