如何从 WSL2 上的 ubuntu shell 设置 JAVA_HOME?

2024-05-01

我在 Windows 10 家庭版上安装了 WSL2。我想使用 Maven(我验证它在 Windows 上安装正确)。

在 Windows 终端的 ubuntu shell 中,我在我的.profile但它不会被设置。 我运行这些命令来尝试设置 JAVA_HOME 的正确方法,但它们不起作用。

user@DESKTOP:/mnt/c/Users/user$ mvn
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

user@DESKTOP:/mnt/c/Users/user$ JAVA_HOME=/mnt/c/Program\ Files/Java/jdk-11.0.10/bin
user@DESKTOP:/mnt/c/Users/user$ cd $JAVA_HOME
-bash: cd: too many arguments

user@DESKTOP:/mnt/c/Users/user$ cd /mnt/c/Program\ Files/Java/jdk-11.0.10/bin
user@DESKTOP:/mnt/c/Program Files/Java/jdk-11.0.10/bin$ mvn --version
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

user@DESKTOP:/mnt/c/Program Files/Java/jdk-11.0.10/bin$ JAVA_HOME=/mnt/c/'Program\ Files'/Java/jdk-11.0.10/bin
user@DESKTOP:/mnt/c/Program Files/Java/jdk-11.0.10/bin$ cd $JAVA_HOME
-bash: cd: too many arguments

user@DESKTOP:/mnt/c/Program Files/Java/jdk-11.0.10/bin$ JAVA_HOME=/mnt/c/'Program\ Files'/Java/jdk-11.0.10
user@DESKTOP:/mnt/c/Program Files/Java/jdk-11.0.10/bin$ cd $JAVA_HOME
-bash: cd: too many arguments

user@DESKTOP:/mnt/c/Program Files/Java/jdk-11.0.10/bin$ cd /mnt/c/Program\ Files/Java/jdk-11.0.10/bin
user@DESKTOP:/mnt/c/Program Files/Java/jdk-11.0.10/bin$ pwd
/mnt/c/Program Files/Java/jdk-11.0.10/bin

user@DESKTOP:/mnt/c/Program Files/Java/jdk-11.0.10/bin$ echo $JAVA_HOME
/mnt/c/Program\ Files/Java/jdk-11.0.10
user@DESKTOP:/mnt/c/Program Files/Java/jdk-11.0.10/bin$


user@DESKTOP:/mnt/c/Program Files/Java/jdk-11.0.10/bin$ export JAVA_HOME="/mnt/c/Program Files/Java/jdk-11.0.10"
user@DESKTOP:/mnt/c/Program Files/Java/jdk-11.0.10/bin$ cd $JAVA_HOME
-bash: cd: too many arguments

user@DESKTOP:~$ export JAVA_HOME="/mnt/c/Program\ Files/Java/jdk-11.0.10"
user@DESKTOP:~$ cd $JAVA_HOME
-bash: cd: too many arguments

UPDATE:

我按照下面用户 Aran(不幸被删除)的回答 - 我编辑了 /etc/environment 并添加了

export JAVA_HOME="/mnt/c/Program Files/Java/jdk-11.0.10"

then in .bashrc I added

source /etc/environment

并认为它有效,因为当我做了一个env在ubuntu shell中,我看到了JAVA_HOME

我安装了mvn,但仍然出现同样的错误:

$ mvn 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 

我认为这是“程序文件”中的空间。 我确实安装了 JDK 11。通过导航到 JAVA_HOME/bin 进行验证,我可以看到 javac.exe。

所以问题没有解决。

UPDATE 2

以下是 Maven 脚本尝试对 JAVA_HOME 执行的操作,这可能有助于找到正确的解决方法:

if [ -z "$JAVA_HOME" ] ; then
  JAVACMD=`which java`
else
  JAVACMD="$JAVA_HOME/bin/java"
fi

if [ ! -x "$JAVACMD" ] ; then
  echo "The JAVA_HOME environment variable is not defined correctly" >&2
  echo "This environment variable is needed to run this program" >&2
  echo "NB: JAVA_HOME should point to a JDK not a JRE" >&2
  exit 1
fi

请注意,脚本会执行“else”部分,而“!-x”部分会失败。


Note: 这不是这个的重复question https://stackoverflow.com/questions/54893108/cd-too-many-arguments-spaces-properly-escaped-quoted。 我无权了解 Maven 如何访问 JAVA_HOME。 问题不在于cd $JAVA_HOME。这是关于使用mvn梅文。如果 Maven 使用的是$JAVA_HOME在内部,我无法看到如何使用它"$JAVA_HOME"


添加 java.exe 的副本,名称仅为“java”。这将防止 mvn 抱怨 - 它会查找“$JAVACMD”,其定义为 JAVACMD="$JAVA_HOME/bin/java"

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 WSL2 上的 ubuntu shell 设置 JAVA_HOME? 的相关文章

随机推荐