WSL2上的Maven看不到JAVA_HOME

nue99wik  于 2023-04-28  发布在  Java
关注(0)|答案(3)|浏览(176)

JDK 11和Maven 38.1安装在我的Windows 10机器上。注意安装路径没有空格。
按照here的建议,使JAVA_HOME的值在Ubuntu shell中可见。然后重启Ubuntu shell。
以下是Windows终端上Ubuntu shell的输出:

user@computer:/path$ java -version
openjdk version "11.0.10" 2021-01-19
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.10+9)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.10+9, mixed mode)

user@computer:/path$ env | grep JAVA
JAVA_HOME=/mnt/c/AdoptOpenJDK/jdk-11-hotspot

user@computer:/path$ mvn -v
The JAVA_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: JAVA_HOME should point to a JDK not a JRE

因此,尽管JAVA_HOME的值在Ubuntu shell中是可见的,但不知何故,mvn看不到它。我该怎么解决这个问题?
cmd运行的Maven给出了以下输出:

C:\path>mvn -v
Apache Maven 3.8.1 (05c21c65bdfed0f71a2f2ada8b84da59348c4c5d)
Maven home: C:\Maven\bin\..
Java version: 11.0.10, vendor: AdoptOpenJDK, runtime: C:\AdoptOpenJDK\jdk-11-hotspot
Default locale: en_IN, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

版本:

  • Windows 10版本2004(OS Build 19041.1110)
  • Java 11.0.10
  • 简体中文
  • WSL2
  • Ubuntu 20.04.2 LTS(通过WSL2)
vwoqyblh

vwoqyblh1#

我放弃了,只是安装了JDK 11和Maven 3。8.1在WSL2中使用SDKMAN。
不是一个理想的解决方案,但不想花更多的时间在这个问题上。

wn9m85ua

wn9m85ua2#

我不反对你在WSL中使用Linux版本的Java和Maven的解决方案,但我确实认为我明白为什么你在最初的问题中的例子失败了。
问题似乎是您使用的是Windows版本的Java/Maven,但WSL内部的JAVA_HOME使用的是“Linux形式”的路径(/mnt/c/AdoptOpenJDK/jdk-11-hotspot)。
Maven在抱怨,因为它是在Windows下运行的,它不理解这条路径。它需要看到C:\AdoptOpenJDK\jdk-11-hotspot
我相信这是因为你链接到的答案说要使用setx WSLENV "JAVA_HOME/p"/p强制将Windows路径转换为WSL/LinuxMap,在本例中您不希望这样做。
另外,一定要重新启动启动WSL的终端,这样它就可以获取新的环境变量。

svujldwt

svujldwt3#

我和你有同样的问题,它仍然不工作。所以我就这么做

alias mvn="cmd.exe /C mvn"

相关问题