进一步阅读

进一步阅读

我的任务是更新一个多年未接触过的 Java 程序,并且在 Centos 7 上使用最新版本的 Java OpenJDK 14.0.1.7-2 构建它时遇到了问题。当我运行命令$ make all时开始编译 Java 程序时,我收到一条/bin/sh: javac: command not found错误消息。

我已经编辑了.bash_profile主目录中的文件并添加了:

export JAVA_HOME=/usr/lib/jvm/java-14-openjdk-14.0.1.7-2.rolling.el7.x86_64/bin/java

接下来:$ source .bash_profile使更改生效并使用它进行验证echo $JAVA_HOME,这给了我预期的输出,但仍然没有运气。

到目前为止,我只能在安装 Java OpenJDK 1.8 以及附加 javac 存储库时才能成功构建该程序。

运行alternatives --display javac我在最后一行得到这个:

Current `best' version is /usr/lib/jvm/java-1.7.0-openjdk 1.7.0.261-2.6.22.2.el7_8.x86_64/bin/javac.

这对我来说很奇怪,因为我的系统上没有安装 Java OpenJDK V1.7

运行alternatives --display java我在最后一行得到这个:

Current `best' version is /usr/lib/jvm/java-14-openjdk-14.0.1.7-2.rolling.el7.x86_64/bin/java.

任何关于我出错的地方的建议将不胜感激。

答案1

有几件事,我注意到在您的 JAVA_HOME 环境变量中您有实际 bin 的路径,请尝试将其更改为:

JAVA_HOME=/usr/lib/jvm/java-14-openjdk-14.0.1.7-2.rolling.el7.x86_64/

您可能还希望检查 PATH 环境变量,请使用以下命令:

find /bin/ /sbin/ /usr/sbin /usr/lib /usr/bin/ /usr/local/bin /usr/local/sbin ${HOME}/ /opt/ -type f -name 'javac' -exec dirname "{}" \;

如果找到导出 PATH=${PATH}:whatever-result-you-get-from-that 或简单地:

export PATH=${PATH}:$(find /bin/ /sbin/ /usr/sbin /usr/lib /usr/bin/ /usr/local/bin /usr/local/sbin ${HOME}/ /opt/ -type f -name 'javac' -exec dirname "{}" \;)

答案2

的替代项javac指向您所说的当前未安装的内容,这表明最简单的答案是更新替代项,以便它指向一个 JDK安装。这将重新指向符号链接,以便/usr/bin/javac再次指向实际的可执行文件,并且PATH搜索javac将再次起作用。不需要实际的PATH改变。

替代方案--config javac

是执行此操作的交互式方式,或者

替代方案--auto javac

进一步阅读

相关内容