【问题标题】:Intellij JAVA_HOME variableIntellij JAVA_HOME 变量
【发布时间】:2015-09-06 17:35:33
【问题描述】:

我开始使用 Gradle 和 Intellij,但在配置 Gradle 的 JVM 时遇到问题。 当我开始一个新的 Gradle 项目时,我不允许将 JVM 定义为我的 JAVA_HOME 变量。以下屏幕截图显示了正在发生的事情:

如您所见,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)

有人能猜出发生了什么吗? 谢谢!

【问题讨论】:

  • 您是否在 IntelliJ 中将 Java 配置为您的 SDK 之一?如果你这样做,你没有明确要求设置 JAVA_HOME。

标签: java intellij-idea


【解决方案1】:

问题是您的“Project SDK”没有!单击“New ...”添加“Project SDK”并选择JDK的路径。然后应该就OK了。

【讨论】:

  • 谢谢。似乎找不到任何关于此的文档。
  • @honyovk 是的,这真的很奇怪,我花了大约一个小时来尝试这样做,因为我的 JAVA_HOME 设置正确并且我删除了旧版本...再次感谢 Harry.Chen
  • 这其实很奇怪。我按照您的步骤,单击了下一步按钮,然后在GroupId, ArtifactId and Version 屏幕上单击了取消按钮。返回到第一个 IDE 屏幕,我单击打开,Gradle JVM 已正确配置。
【解决方案2】:

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

左侧的项目选项卡将显示您没有选择任何 SDK:

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

【讨论】:

  • Re: 在 IntelliJ 欢迎屏幕的右下方 - 我可以进入“欢迎屏幕”吗?从项目中间开始?
  • @RichMeister“项目结构”也在File菜单中,快捷方式为⌘-;
  • 希望一些 IntelliJ 开发人员正在关注这个线程并提供一些体面的错误消息,以避免为这个晦涩的设置拉扯头发?
【解决方案3】:

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

  • 从终端 /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。

【讨论】:

    【解决方案4】:

    在我的情况下,我需要一个较低的 JRE,所以我不得不告诉 IntelliJ 在“平台设置”中使用不同的 JRE

    • 平台设置 > SDK (+;)
    • 单击 + 按钮添加新的 SDK(或重命名并加载现有的 SDK)
    • 从相应的 SDK 中选择 /Contents/Home 目录
      (即 /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home)

    【讨论】:

      【解决方案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 进程将继承 Bash 的任何已被 exported 的环境变量。 (既然你做了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 中添加任何内容。

      【讨论】:

      • 请注意,此方法与目前提到的所有方法一样,除了从命令行启动之外,在 Java 升级时不会动态更新。 $(/usr/libexec/java_home) 位仅在文件创建时计算一次。
      【解决方案6】:

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

      选择 Java 主目录

      【讨论】:

        【解决方案7】:

        在我的情况下,我帮助卸载了 Android 插件 - Idea 一直让我设置 Android NDK 并且不允许我更改 Java 默认 SDK - 由于我不是为 Android 开发的,因此我可以将其删除。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-08-09
          • 2011-11-18
          • 1970-01-01
          • 1970-01-01
          • 2013-06-27
          • 2015-10-27
          • 1970-01-01
          • 2018-05-15
          相关资源
          最近更新 更多