我在 Windows 上的 WSL2 中运行 IntelliJ,IDE 中一切正常,但在命令行中 Java 版本令人困惑。几个例子
which java.exe
> /mnt/c/Program Files/Java/jdk-23.0.1/bin/java.exe
java --version
> openjdk 11.0.25 2024-10-15
> OpenJDK Runtime Environment (build 11.0.25+9-post-Ubuntu-1ubuntu122.04)
> OpenJDK 64-Bit Server VM (build 11.0.25+9-post-Ubuntu-1ubuntu122.04, mixed mode, sharing)
echo $JAVA_HOME
> /opt/java/temurin-17
echo $PATH
> :/opt/java/temurin-17/bin/
出于隐私原因,我省略了大部分 PATH 部分。我在以下位置添加了以下内容.bashrc
:
export PATH="$PATH:/opt/java/temurin-17/bin/"
有很多不同的版本需要考虑,但是当我使用 gradle 运行 commit-hook 时似乎需要 11 个:
> Failed to calculate the value of task ':buildSrc:compileJava' property 'javaCompiler'.
> Toolchain installation '/usr/lib/jvm/java-11-openjdk-amd64' does not provide the required capabilities: [JAVA_COMPILER]
我怎样才能强制:buildSrc:compileJava
安装 temurin-17?
感谢@Mikhail Moskalev 的回答,我发现:
which java
指向/usr/bin/java
这以某种方式指向
/usr/lib/jvm/java-11-openjdk-amd64/bin/java
因此,为了解决我的问题,我只需要删除旧的符号链接并添加一个新的:
/etc/alternatives
不知何故仍然有旧路径,但我的最初问题已通过新的符号链接解决。AFAIK:
PATH 从左到右搜索。尝试
export PATH="/opt/java/temurin-17/bin/:$PATH" export JAVA_HOME=/opt/java/temurin-17
which java.exe
- 查找 Windows 可执行文件显式(Linux 可执行文件 java 没有扩展名)java --version
- 测试在 PATH(或仅限 Linux)中找到的任何第一个可执行文件$JAVA_HOME - 是 Java 搜索库的结束位置等