我的路径存在一些问题,导致我的 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
这看起来不像是一个问题PATH
:您正在调用该java
实用程序。问题是前端java
可执行文件找不到 Java 安装的其余部分。我认为这是由于JAVA_HOME
环境变量造成的Stack Overflow 上的这个帖子确认。检查输出
env | grep '^JAVA'
如果JAVA_HOME
设置,则必须将其设置为包含名为bin
和 的子目录的目录jre
。应该有一个可执行文件$JAVA_HOME/bin/java
。通常 的最后一个目录部分JAVA_HOME
包含子字符串jdk
。
检查设置环境变量的位置并更正JAVA_HOME
.这可能位于/etc/profile
、~/.profile
、 ``/.bash_profile` 或一些我不知道的 MacPorts 或 sppack 文件中(另请参阅如何在 OS X 上设置环境变量?)。