Estou executando o IntelliJ no WSL2 no Windows e tudo está ok dentro do IDE, mas na linha de comando as versões do Java são confusas. Alguns exemplos
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/
Omiti a maioria das partes do PATH por motivos de privacidade. Adicionei isto em .bashrc
:
export PATH="$PATH:/opt/java/temurin-17/bin/"
Existem tantas versões diferentes para considerar, mas parece que são necessárias 11 quando executo um commit-hook com o Gradle:
> 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]
Como posso forçar :buildSrc:compileJava
a instalação do temurin-17?
Graças à resposta de @Mikhail Moskalev, descobri que:
which java
aponta para/usr/bin/java
Isso de alguma forma apontou para
/usr/lib/jvm/java-11-openjdk-amd64/bin/java
Então, para resolver meu problema, eu só tive que remover o antigo link simbólico e adicionar um novo:
/etc/alternatives
de alguma forma ainda tem o caminho antigo, mas meu problema inicial foi resolvido com o novo link simbólico.ATÉ ONDE SEI:
PATH pesquisado da esquerda para a direita. Tente
export PATH="/opt/java/temurin-17/bin/:$PATH" export JAVA_HOME=/opt/java/temurin-17
which java.exe
- procurar por executável explícito do Windows (o executável Java do Linux não tem extensão)java --version
- testar qualquer executável encontrado primeiro no PATH (ou somente Linux)$JAVA_HOME - é onde a pesquisa Java por bibliotecas termina, etc.