10

我正在尝试使用以下命令在 Cygwin 中设置我的 JAVA_HOME:

export JAVA_HOME="/cygdrive/c/Program Files/Java/jdk1.7.0_10"

但是当我这样做时cd $JAVA_HOME,我会收到此错误:

$ cd $JAVA_HOME
-bash: cd: /cygdrive/c/Program: No such file or directory

我尝试引用并转义空格(即,\),但没有奏效。知道还有什么吗?

谢谢,

4

7 回答 7

16

我也遇到了这个问题,我看到了很多帖子,但都没有真正奏效。我做了一个小技巧,事情开始起作用了。

我的 JAVA_HOME 设置为 C:/Program Files/Java/jdk1.7.0_23。问题出在 Program Files 目录上,我遇到了同样的错误。

在 Windows 中,为每个有空格的目录创建了一个短名称,没有空格。您可以通过在命令提示符下运行 dir /X 命令来查看它。Program Files 的简称为 PROGRA~1。

在通过我的电脑的 Windows 环境变量中,我将 JAVA_HOME 更改为 C:/PROGR~1/Java/jdk1.7.0_23,在 hadoop-env.sh 中我将 JAVA_HOME 更改为 /cygdrv/c/PROGRA~1/Java/jdk1。 7.0_23。

它工作得很好。

于 2013-08-25T13:43:09.243 回答
8

你设置JAVA_HOME正确。现在让我们cd也正确。

cd "$JAVA_HOME"
于 2013-01-28T17:10:11.350 回答
5

为了避免使用繁琐的 Windows 环境变量,并使用从 Windows 资源管理器复制的实际路径字符串,我建议将以下内容添加到您的启动脚本中:

             TMP=`cygpath -sw "C:\Program Files\Java\jdk1.8.0_31"`
export JAVA_HOME=`cygpath -u $TMP`

第一次cygpath调用获得一个短的窗口路径;第二个将其转换为u nix 格式,这在 cygwin 中运行良好。

这现在也可以正常工作:

$ cd $JAVA_HOME
于 2015-02-10T20:48:10.747 回答
2

尝试使用短名称以避免路径中出现空格。

"C:\Program Files" 应该具有短名称 C:\Progra~1(您可以使用 DOS dir 命令或在文件资源管理器的地址栏中输入它来验证它)。

以这种方式设置您的 JAVA_HOME:

export JAVA_HOME="/cygdrive/c/Progra~1/Java/jdk1.7.0_10"
于 2013-07-01T20:11:29.933 回答
2

尝试使用 DOS subst 命令获取 JAVA_HOME 路径名的空格。假设驱动器 J;未安装或以其他方式使用。

在 DOS 外壳中

subst j: "C:/Program Files/Java/jdk1.7.0_45"

J:现在是 C:/Program Files/Java/jdk1.7.0_45 的缩写

您现在可以 cd 到 J:

现在运行 Cygwin 和

export JAVA_HOME="J:"
于 2014-03-20T02:01:42.210 回答
1

我在“程序文件”之外安装了 Java,特别是在 c:\tools 中。然后您可以使用 cygpath 将 C:\tools\jdk1.8.0_144 转换为 /cygdrive/c/tools/jdk1.8.0_144

于 2017-08-09T18:51:03.667 回答
0

MSYS2终端上

检查以前的声明: ls "/C/program files/"!工作!- 那是长文件名,所以,直截了当:

export JAVA_HOME="/D/Devel/jdk-12.0.2"

现在 Maven 工作....

查看:

user55@DESKTOP MSYS ~
# echo $JAVA_HOME
/D/Devel/jdk-12.0.2
于 2019-09-13T15:54:30.163 回答