windows - 由于空间问题,WSL 无法找到文件或目录

标签 windows ubuntu path windows-subsystem-for-linux java-home

我最初得到的错误是 wsl 无法找到 JAVA_HOME。在我运行命令之后

export JAVA_HOME="/mnt/c/Program Files/JAVA/jdk-15.0.2"
现在它给我的错误是:
ERROR: JAVA_HOME is set to an invalid directory: /mnt/c/Program Files/Java/jdk-15.0.2

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.
当我跑
${JAVA_HOME}
检查变量我得到响应
bash: /mnt/c/Program: No such file or directory
我相信这是由于文件名中的空格。网上它说这个空间不应该是一个问题,因为它是用引号引起来的,所以我不知道在这里做什么。
任何帮助,将不胜感激!

最佳答案

看起来您正在尝试从 WSL 中使用 Windows 版本的 Java。这应该是可能的,但是您当前正在导出 Windows 版本无法处理的 Linux 样式路径(如您所见)。
如果您同时安装了 Java 的 Windows 和 Linux 版本,请参阅 this answer获取一些相关信息。有关于 npm 的问题,但核心问题是相同的——Windows 版本在 Linux 版本之前的路径中被选中。
如果你只有Windows版本,那么至少修改JAVA_HOME为 'C:\Program Files\JAVA\jdk-15.0.2' (不过,请注意 Linux-shell 字符串中反斜杠的潜在引用问题)。我不确定这是否能解决您的所有问题——我自己从未尝试过通过 WSL 运行 Windows Java 版本。但这至少是您克服当前错误所需要采取的第一步。
刚刚执行 ${JAVA_HOME} 时的第二个错误是意料之中的,因为您正试图将此目录(带有空格)作为命令执行。 shell 将空格之前的部分解释为命令,将空格之后的部分解释为参数。如果你将它设置为一个没有空格的目录,你在尝试执行它时仍然会收到一条错误消息(就像你现在一样),只是它会类似于 bash: /mnt/c: Is a directory .
如果您只想检查它,请使用 echo ${JAVA_HOME} .

关于windows - 由于空间问题,WSL 无法找到文件或目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66537268/

相关文章:

javascript - 如何从nodeJS中的子文件中获取与父文件夹相同的目录中的文件的绝对路径

java - 如何在与 Web 应用程序相同的目录中创建文件夹?

c - C中简单套接字编程中的同步

node.js - bash : node: command not found, 但完整路径有效;我怎样才能让 "node -v"工作? (node.js)

.net - 如何确保从 mysql 数据库中提取的数据在 Mssql 和 SSIS 中被识别?

c++ - 终止应用程序并调用局部对象的析构函数

c++ - gcc 编译/链接后的 .h~ 文件是什么?

java - 如何在 Ubuntu Linux 中使用 JVisualvm 监控 Tomcat6?

windows - cygwin 下 Windows 上 getArgs 的不正确行为

windows - Windows 安装程序上的 Haskell