这个话题可能是一个常见的话题,但是在网上查找时,我并没有看到太多与我的案例相关的内容,因为我运行的不是普通的 ubuntu,而是 WSL(Linux 的 Windows 子系统)。
所以我的问题是我最近从 java 8 切换到 java 17(我需要 java 8 的课程),但我注意到在 ubuntu 终端上,java -version
仍然显示openjdk-1.8.(something)
,而不是jdk-17
类似的东西。
所以我认为卸载 openjdk 可以解决问题,我使用sudo apt-get autoremove openjdk-8-jre
. 但是,现在java
在 ubuntu 终端中输入根本不起作用,并显示:Command 'java' not found, but can be installed with: ...
. 但我担心使用这些命令之一安装它会安装一个新版本的 java,而不是使用已经安装的那个。
我已经将JAVA_HOME
变量设置为java安装目录,也就是mnt/c/Program Files/Java/jdk-17.0.1
,但是Program Files中的空间似乎确实有问题。
我怎样才能解决这个问题?我通常更喜欢使用 bash 终端而不是 Powershell 或 cmd,因为我更了解命令,所以无法使用java
bashjavac
对我来说是个问题。谢谢!
这里有一些关于 WSL 的独特之处。首先,如果您
.exe
在 Windows 端键入 a 的名称,但从 WSL 中,它将起作用。例如,在 WSL 中打开 Bash 提示符,键入notepad.exe
,然后按 Enter。记事本将打开。在您卸载 OpenJDK 8 之前,您已经
openjdk-8-jre
安装了 WSL和Java 17 安装在 Windows 中。当您从 Windows 调用时,添加并运行 Java 的 Windows 副本就java
足够智能了。.exe
但是,当您切换到 WSL 时,当您键入 时java
,它运行的是 Linux 版本。但是,如果您键入 (进入 WSL)java.exe
,它将从 WSL 启动 Java 的 Windows 版本,原因与记事本工作的原因相同。如果我想从 WSL 进行 Java 开发,我将完全卸载 Windows 版本的 Java,在 WSL (
sudo apt update && sudo apt install openjdk-17-jre
) 中安装我想要的 Java 版本,然后通过 WSL Java 编译器在 WSL 中进行开发。