IntelliJ IDEA 使用错误的 $JAVA_HOME when 运行 things inside it, and I can't change it

IntelliJ IDEA uses wrong $JAVA_HOME when running things inside it, and I can't change it

我在使用 Debian Sid。

在所有可以想到的地方,我都将 JDK 设置为 Oracle JDK8:

user@host:~$ cat .bash_profile | grep JAVA_HOME
user@host:~$ cat .bashrc | grep JAVA_HOME
export JAVA_HOME='/usr/lib/jvm/jdk-8-oracle-x64'
user@host:~$ sudo update-alternatives --config java
There are 3 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1069      auto mode
  1            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1069      manual mode
  2            /usr/lib/jvm/jdk-7-oracle-x64/jre/bin/java       317       manual mode
* 3            /usr/lib/jvm/jdk-8-oracle-x64/jre/bin/java       318       manual mode

Press <enter> to keep the current choice[*], or type selection number: 3

在"Switch IDE boot JDK..."IDE操作中:

在 "About" 菜单项中:

如果我 运行 xtermecho $JAVA_HOME,它确实打印 /usr/lib/jvm/jdk-8-oracle-x64,这里一切都很好。


但是,如果我在 IntelliJ IDEA 的内置终端中 运行 echo $JAVA_HOME,我可以看到 $JAVA_HOME 设置为错误的值:

user@host:~$ echo $JAVA_HOME 
/usr/lib/jvm/java-1.7.0-openjdk-amd64
user@host:~$ 

如果我 运行 Java 测试或 运行 Maven 通过 IDE 插件,那么 $JAVA_HOME 设置为相同的错误值(这可以由 Maven 或测试 运行ner 运行ning 测试 Runtime.getRuntime().exec("printenv | grep JAVA_HOME");).

进行演示

无论我在 IDE 中打开什么项目,都会发生这种情况。

还有什么地方可以$JAVA_HOME不小心设置为错误的值,/usr/lib/jvm/java-1.7.0-openjdk-amd64?

找到了。

做了

find / -type f -size -409600c -print0 | xargs -I{} -0 grep -sl "java-1.7.0-openjdk" {}

有罪的文件是 /etc/profile.d/bigtop.sh。我不知道为什么 IDEA (heh) 显然是 运行 那个脚本。它具有以下内容:

export MAVEN_HOME=/usr/local/maven
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64
export ANT_HOME=/usr/local/ant
export GRADLE_HOME=/usr/local/gradle
export PATH=$MAVEN_HOME/bin:$ANT_HOME/bin:$FORREST_HOME/bin:$GRADLE_HOME/bin:$PATH

export GRADLE_OPTS="-Dorg.gradle.daemon=true"

我在那里更改了 JAVA_HOME,它解决了我的问题。

我遇到了同样的问题。解决方案 - 只需关闭 IntelliJ 然后重新启动它 :) 但它与文件 -> 重新启动不同。它必须是一个新的开始。