如何解决通过 jenv 设置 JAVA_HOME 用于 IntelliJ 的无尽麻烦
我有一个看似常见的问题,但在浏览了许多帖子(这里和其他地方)后,人们遇到了无法正确设置 JAVA_HOME 路径的问题,但没有提出解决方案来解决我的问题。
我最近通过 Homebrew
(版本为 Java16
)安装了 Java,但我需要安装 Java8
以用于特定的 IntelliJ
项目。我也通过 Homewbrew 安装了 Java8,并继续安装了 jenv
,以便在我的系统上管理现在多个版本的 Java。
在 IntelliJ > Project Structure
中,我能够指定所需的 SDK 并在 Java8 中工作——直到这里一切都很好。
但是,我随后需要安装 Java14
,这让一切都崩溃了。
我遵循与添加 Java8 时相同的过程,但现在 IntelliJ 在指定 any SDK 时会抱怨 ERROR: JAVA_HOME is set to an invalid directory: /Users/user/.jenv/versions/system
。具体来说,尝试通过执行 gradle jar
我为尝试修复所做的工作(未明确按此顺序执行,并且某些命令执行多次):
jenv enable-plugin export
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(jenv init -)"' >> ~/.bash_profile
jenv add $(/usr/libexec/java_home)
jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-14.jdk/Contents/Home/
jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-84.jdk/Contents/Home/
当这不起作用时,我直接从终端打开 IntelliJ,以继承 bash_profile
变量(我遇到过几次的建议解决方案)。
此外,我还导航到终端中项目的文件夹并发出 jenv java 14
以实现文件夹级规范。
以下是某些终端执行的结果,可能提供信息:
javac -version
javac 16.0.1
java -version
openjdk version "16.0.1" 2021-04-20
OpenJDK Runtime Environment Homebrew (build 16.0.1+0)
OpenJDK 64-Bit Server VM Homebrew (build 16.0.1+0,mixed mode,sharing)
which java
/Users/jzwi/.jenv/shims/java
ls -1 /Library/Java/JavaVirtualMachines
adoptopenjdk-14.jdk
adoptopenjdk-8.jdk
openjdk.jdk
/usr/libexec/java_home -V
Matching Java Virtual Machines (4):
16.0.1,x86_64: "OpenJDK 16.0.1" /Library/Java/JavaVirtualMachines/openjdk.jdk/Contents/Home
15.0.3,x86_64: "Zulu 15.32.15" /Users/user/Library/Java/JavaVirtualMachines/azul-15.0.3/Contents/Home
14.0.2,x86_64: "AdoptOpenJDK 14" /Library/Java/JavaVirtualMachines/adoptopenjdk-14.jdk/Contents/Home
1.8.0_292,x86_64: "AdoptOpenJDK 8" /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
echo ${JAVA_HOME}
/Users/user/.jenv/versions/system
jenv version
system (set by /Users/user/.jenv/version)
jenv versions
* system (set by /Users/user/.jenv/version)
1.8
1.8.0.292
14
14.0
14.0.2
16
16.0
16.0.1
openjdk64-1.8.0.292
openjdk64-14.0.2
openjdk64-16.0.1
第一个问题是:echo ${JAVA_HOME}
是否应该导致系统?似乎大多数教程和解释都会产生更明确的内容(例如,/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home
)。
如果系统不是想要的结果,我如何以我尚未尝试过的方式进行修复?
作为最后一条信息,以下是我的 .bash_profile
本身:
eval export PATH="/Users/user/.jenv/shims:${PATH}"
export JENV_SHELL=bash
export JENV_LOADED=1
unset JAVA_HOME
source '/usr/local/Cellar/jenv/0.5.4/libexec/libexec/../completions/jenv.bash'
jenv rehash 2>/dev/null
jenv refresh-plugins
jenv() {
typeset command
command="$1"
if [ "$#" -gt 0 ]; then
shift
fi
case "$command" in
enable-plugin|rehash|shell|shell-options)
eval `jenv "sh-$command" "$@"`;;
*)
command jenv "$command" "$@";;
esac
}
export PATH="$HOME/.jenv/bin:$PATH"
eval "$(jenv init -)"
unset JAVA_HOME
看起来非常可疑,但我不知道它意味着什么,它是如何到达那里的,注释掉它也不能解决我的问题。
非常感谢您的帮助!!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。