我正在尝试使用此命令在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
我尝试引用并转移空间(即{,\
),但没有效果。
知道还有什么呢?
谢谢,
答案 0 :(得分:15)
我也遇到了这个问题,我看到很多帖子,但没有真正有效。我做了一个小技巧,事情就开始了。
我的JAVA_HOME设置为C:/ Program Files / Java / jdk1.7.0_23。 问题在于Program Files目录,我得到了同样的错误。
在Windows中,为每个目录创建一个简短的名称,其空间没有空格。 您可以通过在命令提示符下运行dir / X命令来查看它。 Program Files的简称是PROGRA~1。
在通过我的电脑的Windows env变量中,我将JAVA_HOME更改为C:/PROGR〜1 / Java / jdk1.7.0_23,并在hadoop-env.sh中将JAVA_HOME更改为/ cygdrv / c / PROGRA~1 / Java /jdk1.7.0_23。
工作正常。
答案 1 :(得分:7)
您正确设置了JAVA_HOME
。现在让我们cd
正确。
cd "$JAVA_HOME"
答案 2 :(得分:4)
为避免使用繁琐的Windows环境变量,并使用从Windows资源管理器复制的实际路径字符串,我建议将以下内容添加到启动脚本中:
TMP=`cygpath -sw "C:\Program Files\Java\jdk1.8.0_31"`
export JAVA_HOME=`cygpath -u $TMP`
第一个cygpath
调用获得 s hort, w indows路径;第二种方法将其转换为 u nix格式,这在cygwin中运行良好。
这也可以正常工作:
$ cd $JAVA_HOME
答案 3 :(得分:2)
尝试使用短名称以避免路径中的空格。
“C:\ Program Files”应该有短名称C:\ Progra~1(您可以使用DOS dir命令验证它或将其输入到文件浏览器的地址栏中。)
以这种方式设置你的JAVA_HOME:
export JAVA_HOME="/cygdrive/c/Progra~1/Java/jdk1.7.0_10"
答案 4 :(得分:1)
尝试使用DOS subst命令获取JAVA_HOME路径名的空格。 假设驾驶J;未安装或以其他方式使用。
在DOS shell中
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:"
答案 5 :(得分:1)
我在" Program Files"之外安装了Java,特别是在c:\ tools中。然后你可以使用cygpath将C:\ tools \ jdk1.8.0_144转换为/cygdrive/c/tools/jdk1.8.0_144
答案 6 :(得分: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
答案 7 :(得分:-1)
您可以提供正常的C:目录路径,如果用“”包围,则不需要转义Program Files中的空格。
export JAVA_HOME="C:/Program Files/Java/jdk1.7.0_45"