WSL Bash在PATH中找不到Java

问题描述

我的.bashrc中有一个导出命令,用于将java.exe文件的路径添加到PATH。现在,运行echo $ PATH可以在结尾处给我

/mnt/c/Program Files/Java/jdk-14.0.2/bin

这正是java.exe和javac.exe文件的存储位置,但是当我运行类似 java -version我遇到了Command 'java' not found错误。我在这里做什么错了?

解决方法

您已将Java二进制文件的 Windows 版本添加到Path。您使用WSL运行 Linux 二进制文件。 (WSL1是兼容层,WSL2使用Linux内核。)

您有两个选择:

  1. 在WSL环境中安装Java。例如在Ubuntu上,使用以下命令:

    sudo apt update
    sudo apt install openjdk-14-jdk
    

    安装Java后,它将在搜索路径中可用。

  2. 您也可以通过在名称上调用java.exe(请注意.exe)来运行Windows版本。这样,WSL将调用Windows版本。 (https://docs.microsoft.com/en-us/windows/wsl/interop#run-windows-tools-from-linux

,

如果出于某种原因要使用Windows版本的Java,则几乎可以使用。请尝试这个:)

java.exe -version
,

在wsl中安装Java:

sudo apt-get -y install openjdk-14-jdk 

检查版本。

java –version 

检查配置JAVA_HOME的路径。

sudo update-alternatives --config java 

例如

/usr/lib/jvm/java-14-openjdk-amd64/bin/java. 

编辑环境文件以添加路径:

   sudo nano /etc/environment 

add声明并添加JAVA_HOME:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:$JAVA_HOME/bin" 

JAVA_HOME=/usr/lib/jvm/java-14-openjdk-amd64 

保存并检查路径。

source /etc/environment 

echo $JAVA_HOME 

输出

/usr/lib/jvm/java-14-openjdk-amd64