我有一个看似常见的问题,但是在浏览了许多遇到无法正确设置 JAVA_HOME 路径问题的人的帖子(这里和其他地方)之后,没有提出的解决方案可以解决我的问题。
我最近通过Homebrew
(版本为Java16
)安装了 Java,但我需要安装Java8
以用于特定IntelliJ
项目。我也通过 Homewbrew 安装了 Java8,并继续安装jenv
以管理我系统上现在多个版本的 Java。
在IntelliJ > Project Structure
中,我能够指定所需的 SDK 并在 Java8 中工作——直到这里一切都很好。
但是,我随后需要安装Java14
,这一切都崩溃了。
我遵循了与添加 Java8 时相同的过程,但现在 IntelliJ在指定任何SDKERROR: JAVA_HOME is set to an invalid directory: /Users/user/.jenv/versions/system
时都会抱怨。具体来说,尝试通过 gradle 构建 .jar 文件时会抛出此错误,方法是执行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
似乎超级可疑,但我既不知道它是什么意思,也不知道它是如何到达那里的,也没有评论它解决我的问题。
非常感谢您的帮助!