Intellij JAVA_HOMEvariables

我开始使用Gradle和Intellij,但是我有问题来configurationGradle的JVM。 当我启动一个新的Gradle项目时,我不能将JVM定义为我的JAVA_HOMEvariables。 以下屏幕截图显示了正在发生的事情:

新的gradle项目

正如你所看到的Intellij说,我的JAVA_HOMEvariables没有定义,但是如果我inputecho $JAVA_HOME我可以得到我的Java目录,在我的情况下: /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home

我的./~bash_profileconfiguration如下: export JAVA_HOME=$(/usr/libexec/java_home)

有人可以弄清楚发生了什么? 谢谢!

问题是你的“项目SDK”是没有! 通过单击“新build…”添加一个“项目SDK”,然后selectJDK的path。 然后它应该可以。

有点不直观,但你必须先为Java项目设置一个SDK。 在IntelliJ欢迎屏幕的右下angular,select“configuration>项目默认值>项目结构”。

左边的Project选项卡会显示你没有selectSDK:

因此,您必须点击下拉列表右侧的“新build…”button并将其指向您的JDK。 之后,您可以返回导入屏幕,并且应该使用您的JAVA_HOMEvariables填充,假设您有这个设置。

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

  • 从terminal/应用程序/ IntelliJ IDEA 14.app/Contents/MacOS(这将select你的bash环境variables)启动你的intellij,
  • 通过执行以下launchctl setenv JAVA_HOME "/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home"添加loginenvvariables: launchctl setenv JAVA_HOME "/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home"

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

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

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

  • 平台设置> SDK( + ;
  • 点击+button添加一个新的SDK(或重命名并加载一个现有的)
  • 从相应的SDK中select/ Contents / Home目录
    (ie /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home)

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

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

这里的问题是,你的$JAVA_HOME 是正确的 ,你在错误的地方定义它。

  • 当你打开一个terminal并启动Bash会话时,它将读取~/.bash_profile文件。 因此,当你inputecho $JAVA_HOME ,它将返回已经设置的值。
  • 当你直接启动IntelliJ时,它不会读取~/.bash_profile …为什么要这样呢? 所以对于IntelliJ,这个variables没有设置。

有两种可能的解决scheme:

  • 从Bash会话启动IntelliJ:打开terminal并运行"/Applications/IntelliJ IDEA.app/Contents/MacOS/idea"idea过程将会inheritance已export的Bash的任何环境variables。 (因为你已经export JAVA_HOME=… ,它工作!),或者,复杂的方式:
  • 设置适用于所有程序的全局环境variables,而不仅仅是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 

    请注意,这也影响到terminal进程,所以不需要在你的~/.bash_profile任何内容。