我开始使用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)
有人可以知道发生了什么事吗? 谢谢!
答案 0 :(得分:91)
有点反直觉,但您必须首先为Java项目设置SDK。在IntelliJ欢迎屏幕的右下角,选择'配置>项目默认值>项目结构'。
左侧的Project选项卡将显示您没有选择SDK:
因此,您必须单击下拉列表右侧的“新建...”按钮并将其指向JDK。之后,您可以返回导入屏幕,并且应该使用您的JAVA_HOME变量进行填充,只要您拥有此设置即可。
答案 1 :(得分:42)
问题是你的" Project SDK"没有!添加一个" Project SDK"点击"新..."并选择JDK的路径。然后应该没问题。
答案 2 :(得分:8)
如果您想通过intellij识别您的JAVA_HOME,可以执行以下操作之一:
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"
答案 4 :(得分:5)
到目前为止,还没有人回答实际问题。
有人可以知道发生了什么事吗?
这里的问题是,当您$JAVA_HOME
is correct的值时,您将其定义为在错误的位置。
~/.bash_profile
文件。因此,当您输入echo $JAVA_HOME
时,它将返回已在此处设置的值。~/.bash_profile
...为什么要这样做?因此,对于IntelliJ,此变量未设置。有两种可能的解决方案:
"/Applications/IntelliJ IDEA.app/Contents/MacOS/idea"
。 idea
进程将继承已经export
编辑的Bash的任何环境变量。 (因为你做过export JAVA_HOME=…
,它可以工作!),或者是复杂的方式:设置适用于所有程序的全局环境变量,而不仅仅是Bash会话。这比您想象的要复杂得多,并且例如解释为here和here。你应该做的是运行
/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)