パス病理学:Javaは機能しなくなりました。

パス病理学:Javaは機能しなくなりました。

私のパスにJavaサービスがクラッシュするいくつかの問題があります。コンポーネントが正しい位置にあるようです。

$ which java
/usr/bin/java
$ which javac
/usr/bin/javac

ただし、バージョンクエリは機能しなくなりました。

$ java --version
Unable to locate an executable at "/usr/bin/javac/bin/java" (-1)
$ javac --version
Unable to locate an executable at "/usr/bin/javac/bin/javac" (-1)

これはMacPortsとSpackをインストールするのに忙しい一日を過ごした後の様子です。

この問題をどのように解決しますか?


システムメッセージ:

$ uname -a
Darwin ****.***.*** 16.6.0 Darwin Kernel Version 16.6.0: Fri Apr 14 16:21:16 PDT 2017; root:xnu-3789.60.24~6/RELEASE_X86_64 x86_64

ルート設定は次のとおりです。

$ echo $PATH
/Users/*******/****/spack/:/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/TeX/texbin

答え1

これは問題にならないようですPATHjavaユーティリティを呼び出しているのです。問題は、フロントエンドjava実行可能ファイルがJavaインストールの残りの部分を見つけることができないことです。JAVA_HOME環境変数のためだと思います。スタックオーバーフローに関するこの投稿確認してください。出力を確認してください

env | grep '^JAVA'

設定されている場合とというサブディレクトリを含むディレクトリJAVA_HOMEに設定する必要があります。実行可能ファイルが必要です。通常、最後のディレクトリ部分には部分文字列が含まれます。binjre$JAVA_HOME/bin/javaJAVA_HOMEjdk

環境変数が設定されている場所を確認して修正してくださいJAVA_HOME。これは/.bash_profileまたは私が知らないいくつかのMacPortsまたはsppackファイル/etc/profileにあります(参照)。~/.profileOS Xで環境変数を設定するには?)。

関連情報