Intellij JAVA_HOME变量

use*_*889 58 java intellij-idea

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

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

小智 94

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

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

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

  • 回复:在IntelliJ欢迎屏幕的右下角-我可以进入“欢迎屏幕”吗?从一个项目的中间? (2认同)
  • @RichMeister“项目结构”也在`文件`菜单中,快捷键`⌘-;` (2认同)
  • 希望一些 IntelliJ 开发人员正在关注此线程并提供一些不错的错误消息,以避免为这种晦涩的设置拉扯头发? (2认同)

Har*_*hen 46

问题是你的"Project SDK"没有!单击"新建..."添加"项目SDK",然后选择JDK的路径.然后应该没问题.


小智 8

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

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

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

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


Sha*_*mal 6

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

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


Tho*_*asR 6

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

有人可以弄清楚发生了什么事吗?

这里的问题是,虽然your 的$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)
    
    Run Code Online (Sandbox Code Playgroud)

    但是,重新启动后将重置此设置。为了确保每次启动都运行此命令,请执行

    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
    
    Run Code Online (Sandbox Code Playgroud)

    请注意,这也会影响终端程序,因此无需在中添加任何内容~/.bash_profile