問題タブ [jenv]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 「システム」バージョンがjenvで設定されている場合、MavenはJAVA_HOMEに問題があります
私はMacOS、zshを使用しています。
jenv をインストールし、いくつかの Java バージョンを追加しました。
私は走った
と
jenv 医師は次のように返します。
[OK] JAVA_HOME 変数はおそらく jenv PROMPT によって設定されます
[OK] パス内の Java バイナリは jenv shims
です [OK] Jenv は正しくロードされます
jenv バージョンの戻り値:
しかし、端末セッションを開始して mvn --version を実行すると、
jenv でシステム以外の Java バージョンを設定すると、次のように正常に動作します。
しかし、jenv のバージョンがシステムの場合、なぜ機能しないのでしょうか。
java - IntelliJで使用するためにjenvを介してJAVA_HOMEを設定する無限のトラブル
私は一見一般的な問題を抱えていますが、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
java -version
which java
ls -1 /Library/Java/JavaVirtualMachines
/usr/libexec/java_home -V
echo ${JAVA_HOME}
jenv version
jenv versions
最初の質問は次のとおりです。echo ${JAVA_HOME}
結果はsystemになりますか? ほとんどのチュートリアルと説明は、より明確なもの (例: /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home
) になっているようです。
システムが望ましい結果ではない場合、まだ試していない方法で修正するにはどうすればよいですか?
最後の情報として、ここに私.bash_profile
自身が持っているものがあります:
非常に疑わしいようですが、それが何を意味するのunset JAVA_HOME
か、どのようにそこに到達したのか、コメントアウトしても問題は解決しません。
助けてくれてありがとう!!