Impossible d'installer Maven sous Windows: "JAVA_HOME est défini sur un répertoire non valide"

98

J'ai suivi le tutoriel Maven à la lettre mais je n'arrive toujours pas à installer Maven sur Windows.

Lorsque j'exécute ce qui suit dans l'invite de commande:

E:\Documents and Settings\zach>mvn --version

Je reçois:

'mvn' is not recognized as an internal or external command, operable program or batch file.

J'ai navigué vers le dossier d'installation de maven mvn --versionet j'ai couru et j'ai obtenu:

E:\java resources\apache-maven-2.2.0\bin>mvn --version
ERROR: JAVA_HOME is set to an invalid directory.
JAVA_HOME = "E:\Sun\SDK\jdk\bin"
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation

mais quand je cours java -versionje reçois:

java version "1.6.0_14"
Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
Java HotSpot(TM) Client VM (build 14.0-b16, mixed mode)

J'ai donc installé Java. Est-ce que quelqu'un sait quel est le problème?

bonjour_world_infinity
la source

Réponses:

172

Les problèmes sont liés à vos chemins.

  1. Assurez-vous que le répertoire "E: \ java resources \ apache-maven-2.2.0 \ bin" se trouve sur le chemin de recherche de vos commandes.

  2. Assurez-vous que la variable JAVA_HOME fait référence au répertoire de base de votre installation Java. Si vous exécutez Java à partir de "E: \ Sun \ SDK \ jdk \ bin", la variable JAVA_HOME doit pointer vers "E: \ Sun \ SDK \ jdk".

    NB: JAVA_HOME ne doit PAS se terminer par "\ bin" 1 .

  3. Assurez-vous que vous n'avez pas mis de point-virgule dans la variable JAVA_HOME 2 .

    NB: JAVA_HOME doit être un nom de répertoire unique et non une liste de noms de répertoires de type "PATH" séparés par des points-virgules.

Notez également que vous pouvez rencontrer des problèmes si vous avez ignoré ce conseil dans les instructions Maven sur Windows concernant les espaces dans les chemins d'accès clés.

"Maven, comme de nombreux outils multiplateformes, peut rencontrer des problèmes lorsqu'il y a des espaces dans des chemins d'accès importants ."

"Vous devez installer le SDK Java (par exemple depuis le site de téléchargement d'Oracle), et vous devez l'installer sur un chemin sans espaces , tel que c: \ j2se1.6." '

"Vous devez décompresser la distribution Maven. Ne la décompressez pas au milieu de votre code source; choisissez un emplacement ( sans espace dans le chemin! ) Et décompressez-le là."

Le remède simple pour cela serait de réinstaller Java ou Maven dans un emplacement différent afin qu'il n'y ait pas d' espace dans le chemin


1 - .... sauf si vous avez fait un choix insensé pour le nom de votre emplacement d'installation.

2 - Apparemment, une solution "vaudou" courante aux problèmes de chemin Windows est de frapper un point-virgule à la fin. Il n'est pas recommandé en général, ne fonctionne absolument pas ici.

Stephen C
la source
29

ERREUR: JAVA_HOME est défini sur un répertoire non valide. JAVA_HOME = "E: \ Sun \ SDK \ jdk \ bin" Veuillez définir la variable JAVA_HOME dans votre environnement pour qu'elle corresponde à l'emplacement de votre installation Java

JAVA_HOMEdoit être défini sur E:\Sun\SDK\jdk. PATHdoit être défini pour inclure %JAVA_HOME%\bin.

dfa
la source
13

J'ai rencontré ce problème avec une installation Grails.

Le problème était que mon JAVA_HOME était c:\sun\jdk\et mon PATH a%JAVA_HOME%bin

Je l'ai changé en: JAVA_HOME= "c:\sun\jdk" and PATH="%JAVA_HOME%\bin"

Cela a fonctionné après cela.

L_7337
la source
10

J'étais confronté au même problème et je viens de mettre à jour le JAVA_HOME a fonctionné pour moi.

auparavant, c'était comme ça: C: \ Program Files \ Java \ jdk1.6.0_45 \ bin Je viens de supprimer le \ bin et cela a fonctionné pour moi.

user3548196
la source
4

En raison de restrictions de sécurité sur mon lieu de travail actuel, je n'ai pas pu définir de variables d'environnement sur mon PC Windows.

Ma solution de contournement était de copier le fichier mvn.bat de% M2% dans C: \ WINNT et d'ajouter ce qui suit en haut du fichier de commandes:

@REM Needed as unable to set env variables on my desktop PC.

set MAVEN_OPTS=-Xms256m -Xmx1024m
set M2_HOME=C:\apache-maven-3.0.4
set M2=%M2_HOME%\bin
set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_15
set PATH=%JAVA_HOME%\bin;%M2%;%PATH%

Ce n'est pas la meilleure solution mais cela fonctionne. Si quelqu'un a un autre moyen ou contournement où les variables d'environnement standard ne peuvent pas être définies dans le système, je serais heureux de leur réponse.

theINtoy
la source
3

J'ai eu le même problème et aucune des réponses ci-dessus ne l'a résolu pour moi car mes variables d'environnement étaient toutes définies. Je venais de réinstaller mon Java.

Ce qui a fonctionné était de

  1. allez dans C:\path\to\apache-maven-3.0.4\binet ouvrez le mvn.batfichier.
  2. Trouvez la ligne qui ressemble à ceci @SET JAVA_HOME=C:\progra~1\java\jdk1.7.0_03
  3. Corrigez-le sur le bon chemin

Je ne sais pas si cela est spécifique à Windows, mais cela pourrait aider quelqu'un!

codinguser
la source
2

Après de nombreuses tentatives infructueuses, j'ai trouvé la solution

C'était le ";" à la fin de JAVA_HOME que je mets toujours à la fin de chaque nouvelle variable que j'ai définie. Alors débarrassez-vous des;.

JAVA_HOME le définit également dans la variable utilisateur (sans le ";" bien sûr)

Chinmoy
la source
1
"... que je mets toujours à la fin de chaque nouvelle variable que je fixe" - Pourquoi feriez-vous ça?
Stephen C
1

vous devez définir JAVA_HOME ou MAVEN_HOME sans répertoire bin par exemple: - JAVA_HOME = C: \ Program Files (x86) \ Java \ jdk1.7.0_45 - MAVEN_HOME = C: \ Program Files (x86) \ apache-maven-3.1.1 now path = .....;% MAVEN_HOME% \ bin;% JAVA_HOME% \ bin ça marche correctement

Alireza Alallah
la source
1

Parfois, dans Windows, les espaces dans les chemins ne sont pas reconnus correctement

Si vous avez un problème de chemin et que le chemin semble

c:\Program Files\....

essayez de le changer dans un ancien format DOS comme

"C:\Progra~1\...

Vous pouvez utiliser dir /xpour vérifier la syntaxe correcte (troisième colonne)

C:\>dir /x ... 11.01.2008 15:47 <DIR> DOCUME~1 Documents and Settings 01.12.2006 09:10 <DIR> MYPROJ~1 My Projects 21.01.2011 14:08 <DIR> PROGRA~1 Program Files ...

Dans mon PC, JAVA_HOME est (et cela fonctionne)

"C:\Progra~1\Java\jdk1.8.0_121"

Testé sous Windows 10

Diego Betto
la source
0

JAVA_HOME devrait ressembler à ceci C: \ PROGRA ~ 1 \ Java \ jdk

J'espère que cela fonctionnera!

Débaser Rakshit
la source
0

Cela semble être un ancien message, mais je voulais quand même partager comment ce problème a été résolu pour moi.

Pour les utilisateurs, qui n'ont pas d'accès administrateur et lorsqu'ils ouvrent une invite de commande, il s'exécute sous le privilège utilisateur. Cela signifie que vous pouvez avoir un chemin comme C: \ Users \

Ainsi, en essayant C: \ Users \ XYZ> mvn --version, il recherche en fait le chemin JAVA_HOME à partir des variables utilisateur et non des variables système dans les variables d'environnement.

Donc, pour résoudre ce problème, nous devons créer une variable d'environnement pour JAVA_HOME dans les variables utilisateur.

J'espère que cela aide quelqu'un.

Maneshwar
la source
Ermmm ... Les variables d'environnement de l'utilisateur remplacent les variables d'environnement système sous Windows. Si vous avez une variable d'environnement système et utilisateur avec le même nom, alors la variable utilisateur "gagne", et c'est ce que voit l'application.
Stephen C
0

Exécuter eclipse et également exécuter Maven vous obligera à stocker deux variables de chemin, une dans votre emplacement jdk1.7_x_x_x et également dans votre jdk1.7_x_x_ \ bin. Si vous utilisez Windows, lorsque vous êtes dans vos variables d'environnement, procédez comme suit:

1) créez une variable USER appelée JAVA_HOME. Pointez-le vers l'emplacement de votre fichier JAVA. Par exemple: "C: \ Program Files \ Java \ jdk1.7.0_51" (supprimez les guillemets)

2) sous PATH, ajoutez% JAVA_HOME% au PATH. Cela ajoutera l'emplacement du fichier de l'étape 1 à votre PATH. C'est bon pour MAVEN

3) si vous utilisez eclipse, vous devez avoir le chemin vers "C: \ Program Files \ Java \ jdk1.7.0_51 \ bin". Ajoutez maintenant% JAVA_HOME% \ bin à la fin de votre chemin.

4) votre chemin doit ressembler à ceci: C: \ Program Files (x86) \ Google \ google_appengine \; C: \ Users \ username \ AppData \ Roaming \ npm;% M2%;% JAVA_HOME%;% JAVA_HOME% \ bin

Remarques: les éléments inclus dans des% comme% M2% sont des variables affectées. Cela semble redondant mais nécessaire. Vous pouvez confirmer que tout fonctionne en tapant:

java -version
javac -version
mvn -version

Chacune de ces trois instructions tapées dans l'invite de commande ne doit pas renvoyer d'erreurs.

Puces grognantes
la source
L'étape 2) est incorrecte et inutile. Ni la chaîne d'outils Java ni Maven n'exigent que% JAVA_HOME% soit dans la variable "PATH". (Il ne fera aucun réel mal, mais ne sert à rien non plus .) Référence - tutorialspoint.com/maven/maven_environment_setup.htm
Stephen C
0

en utilisant Windows 10

J'étais confronté à un problème .. puis j'ai supprimé complètement la variable JAVA_HOME et j'ai simplement ajouté% JAVA_HOME% \ bin dans PATH, puis cela a fonctionné !!! pour moi

Espion de code
la source
1
Merci. Cela fonctionne après l'ajout de "/ bin" à la fin de la variable Java_home
Rahul
-1

Le JDK a changé l'emplacement de java.exe entre 1.6 et 1.7 !!!

Dans mon cas, j'ai trouvé que le JAVA_HOME pour le JDK devait ajouter le \ jre à la fin. Le fichier mvn bat recherche java.exe et le recherche dans JAVA_HOME \ bin. Ce n'est pas là pour JDK 1.7; il se trouve dans JAVA_HOME \ jre \ bin. Dans JDK 1.6, il est dans JAVA_HOME \ bin.

J'espère que cela aide quelqu'un.

Brian Reinhold
la source
1
Je pense que c'est incorrect. Selon la documentation officielle d'Oracle pour Java 7 ( docs.oracle.com/javase/7/docs/technotes/tools/windows/… ), dans une installation JDK, la commande "java" apparaît à la fois dans "JAVA_HOME \ bin" et " JAVA_HOME \ jre \ bin ". Si ce n'est pas le cas dans votre installation, c'est que quelqu'un / quelque chose l'a dérangé!
Stephen C
Intéressant. Ce n'est pas dans mon répertoire / bin, juste mon / jre / bin. Peut-être que j'ai besoin de réinstaller le dernier JDK
Brian Reinhold
-1

Ma situation était un peu différente.

  • JAVA_HOME a été réglé correctement pour pointer sur 1,7
  • D'autres projets Maven fonctionnaient / se construisaient bien avec 1.7 fonctionnalités.
  • PATH a été réglé correctement.
  • Tout était à jour.

Mon nouveau projet Maven ne fonctionnait toujours pas. Ce que j'ai remarqué, c'est la différence dans les journaux lorsque j'ai couru mvn clean install. Pour mes anciens projets Maven, cela a montré

[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ oldProject---

Mais pour mon nouveau projet, il a montré:

[INFO] --- maven-compiler-plugin:2.0.2:compile (default-compile) @ newProject ---

Alors, j'ai regardé POM.xmlet remarqué cette chose dans le POM de l'ancien projet:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
    </plugins>
</build>

Fondamentalement, ce plugin indique la version du compilateur à utiliser pour la compilation. Je viens de l'ajouter au nouveau projet POM.xmlet les choses ont fonctionné.

J'espère que c'est utile à quelqu'un.

Bhushan
la source
Ce n'est pas une réponse valable à cette question. Les symptômes sont différents. La solution est différente.
Stephen C
-1

J'utilise Windows 7, le problème que j'ai eu était simple:

J'avais ceci pour ma valeur de variable d'environnement JAVA_HOME:

"C:\Program Files\Java\jdk1.7.0_51;"

quand il veut:

"C:\Program Files\Java\jdk1.7.0_51"

le point-virgule frappe à nouveau!

:)

C'est ainsi que j'ai résolu ce problème, donc cela devrait être une solution possible.

Alexander Mills
la source