export JAVA_HOME avec des espaces dans Cygwin
Je suis en train de configurer mon JAVA_HOME dans Cygwin avec cette commande:
export JAVA_HOME="/cygdrive/c/Program Files/Java/jdk1.7.0_10"
Mais quand je fais cd $JAVA_HOME
, j'aimerais obtenir cette erreur:
$ cd $JAVA_HOME
-bash: cd: /cygdrive/c/Program: No such file or directory
J'ai essayé de le citer, et d'échapper à l'espace (c'est à dire., \
), mais aucune n'a fonctionné.
Toute idée de ce que d'autre le ferait?
Merci,
OriginalL'auteur user1508893 | 2013-01-28
Vous devez vous connecter pour publier un commentaire.
J'ai été confronté à ce problème aussi, et j'ai vu beaucoup de messages, mais rien n'a vraiment fonctionné. Il y a un petit truc que j'ai fait et les choses ont commencé à travailler.
Mon JAVA_HOME a été mis à C:/Program Files/Java/jdk1.7.0_23.
Le problème était avec le répertoire Program Files et j'avais la même erreur.
Dans Windows il y a un nom court créé pour chaque répertoire avec un espace qui est sans un espace.
Vous pouvez les consulter en cours d'exécution dir /X commande dans l'invite de commande.
Le nom Court pour les Fichiers de Programme a été PROGRA~1.
Dans le Windows env variable par le biais de Mon Ordinateur, j'ai changé le JAVA_HOME pour C:/PROGR~1/Java/jdk1.7.0_23 et dans hadoop-env.sh j'ai changé JAVA_HOME /cygdrv/c/PROGRA~1/Java/jdk1.7.0_23.
Il a bien fonctionné.
À noter que "l'C:\Program Files (x86)" est "/cygdrive/c/PROGRA~2"
OriginalL'auteur vikas kapdoskar
Vous définissez
JAVA_HOME
correctement. Maintenant, nous allonscd
correctement.ls "$JAVA_HOME"
? Et quel est le nouveau message d'erreur lorsqu'il ne fonctionne pas?Et btw, est-il un système 64 bits? Il y a une sorte de redirection de Fichiers de Programme dans Programme Files (x86) impliqués, peut-être cygwin 32 bits des trucs juste ne pas voir votre véritable Programme Fichiers.
Oui, il y a un Programme Files (x86), mais j'ai des trucs dans Program Files, trop (pour des raisons historiques). Et la commande ls renvoie la même erreur lors de la commande cd.
Vous avez posté votre commande et message d'erreur lorsque vous
cd
sans guillemets. Maintenant le même poste pourcd
avec des guillemets doubles. Essayez également de vérifier l'élément par élément: nels "/cygrive/c/Program Files/"
montrer Java sous-répertoire? Qu'en estls "/cygrive/c/Program Files/Java/"
? (La principale chose à comprendre, c'est que nous avons déjà résolu le problème avec la variable à l'aide de guillemets doubles. Ce qui reste est un problème de système de fichiers).Cette solution n'est pas beaucoup utiliser lors de la commande cd est intégré dans un script, par exemple, qui démarre tomcat. Je ne veux pas modifier tomcat scripts pour obtenir ce travail, une meilleure solution est d'utiliser le windows nom court bien que j'ai l'impression que d'avoir à faire cela met en évidence une lacune dans Cygwin plus qu'autre chose.
OriginalL'auteur Anton Kovalenko
D'éviter le fastidieux variables d'environnement Windows, et également utiliser le chemin d'accès réel de la chaîne copié à partir de l'explorateur Windows, je vous suggère d'ajouter les éléments suivants à votre script de démarrage:
La première
cygpath
invocation obtient un short, windows chemin; la deuxième convertit unix format, qui fonctionne très bien dans cygwin.Ce sera aussi maintenant fonctionner correctement:
OriginalL'auteur user2023370
Essayez d'utiliser le nom court pour éviter un espace dans le chemin d'accès.
"C:\Program les Fichiers" devrait avoir le nom court de l'C:\Progra~1 (vous pouvez le vérifier à l'aide de DOS commande dir ou entrant dans la barre d'adresse dans l'explorateur de fichiers).
Définir votre JAVA_HOME de cette façon:
OriginalL'auteur user2540312
Essayez d'utiliser le DOS subst commande de prendre les espaces de la JAVA_HOME nom de chemin d'accès.
En supposant que le lecteur J; n'est pas monté ou utilisée d'une autre manière.
Dans un shell DOS
J: est maintenant une abréviation pour C:/Program Files/Java/jdk1.7.0_45
Vous pouvez maintenant cd de J:
maintenant utiliser Cygwin et
OriginalL'auteur Tim Child
J'ai installé Java à l'extérieur de "Program Files", et plus précisément dans c:\tools. Ensuite, vous pouvez utiliser cygpath pour convertir le C:\tools\jdk1.8.0_144 d' /cygdrive/c/outils/jdk1.8.0_144
OriginalL'auteur TikiTavi
Vous pouvez donner à la normale C: chemin d'accès au répertoire, et si entouré par "" vous n'avez pas besoin de s'échapper de l'espace dans les Fichiers du Programme.
Ne fonctionne pas avec
mvn
et de nombreux autres Java utils. Dépend de la façon dont l'exec est fait.OriginalL'auteur RichardSJust