私は一見一般的な問題を抱えていますが、JAVA_HOMEパスを適切に設定できないという問題を経験している人々の多くの投稿(ここやその他)を精査した後、提案された解決策は私の問題を解決していません.
最近 Java をインストールしましHomebrew
た (バージョンは でした) が、特定のプロジェクトで使用Java16
するためにインストールする必要がありました。Homewbrew を介して Java8 もインストールし、システムで複数のバージョンの Java を管理するためにインストールも進めました。Java8
IntelliJ
jenv
では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
か、どのようにそこに到達したのか、コメントアウトしても問題は解決しません。
助けてくれてありがとう!!