微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过 jenv 设置 JAVA_HOME 用于 IntelliJ 的无尽麻烦

如何解决通过 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

通过 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 举报,一经查实,本站将立刻删除。