Intellij JAVA_HOMEvariables
我开始使用Gradle和Intellij,但是我有问题来configurationGradle的JVM。 当我启动一个新的Gradle项目时,我不能将JVM定义为我的JAVA_HOMEvariables。 以下屏幕截图显示了正在发生的事情:
正如你所看到的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
任何内容。