3

私は一見一般的な問題を抱えていますが、JAVA_HOMEパスを適切に設定できないという問題を経験している人々の多くの投稿(ここやその他)を精査した後、提案された解決策は私の問題を解決していません.

最近 Java をインストールしましHomebrewた (バージョンは でした) が、特定のプロジェクトで使用Java16するためにインストールする必要がありました。Homewbrew を介して Java8 もインストールし、システムで複数のバージョンの Java を管理するためにインストールも進めました。Java8IntelliJjenv

ではIntelliJ > Project Structure、目的の SDK を指定して Java8 で動作させることができました。ここまではすべて順調でした。

ただし、その後、 をインストールする必要がJava14あり、その時点ですべてがバラバラになりました。

Java8を追加したときと同じ手順を踏んだのですがERROR: JAVA_HOME is set to an invalid directory: /Users/user/.jenv/versions/systemいずれかのSDKを指定するとIntelliJが文句を言うようになりました。具体的には、実行して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/

bash_profileこれが機能しなかったとき、変数を継承するために、IntelliJ をターミナルから直接開きました(私が何度か遭遇した提案された解決策)。

さらに、ターミナルでプロジェクトのフォルダーに移動し、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}結果はsystemになりますか? ほとんどのチュートリアルと説明は、より明確なもの (例: /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か、どのようにそこに到達したのか、コメントアウトしても問題は解決しません。

助けてくれてありがとう!!

4

0 に答える 0