Impossibile installare Maven su Windows: "JAVA_HOME è impostato su una directory non valida"


98

Ho seguito il tutorial di Maven alla lettera ma non riesco ancora a installare Maven su Windows.

Quando eseguo quanto segue nel prompt dei comandi:

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

Ottengo:

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

Sono passato alla cartella di installazione di Maven mvn --versione ho eseguito e ottenuto:

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

ma quando corro java -versionottengo:

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)

Quindi ho Java installato. Qualcuno sa qual è il problema?

Risposte:


172

I problemi hanno a che fare con i tuoi percorsi.

  1. Assicurati che la directory "E: \ java resources \ apache-maven-2.2.0 \ bin" si trovi nel percorso di ricerca dei comandi.

  2. Assicurati che la variabile JAVA_HOME faccia riferimento alla directory home per la tua installazione di Java. Se stai eseguendo Java da "E: \ Sun \ SDK \ jdk \ bin", la variabile JAVA_HOME deve puntare a "E: \ Sun \ SDK \ jdk".

    NB: JAVA_HOME NON dovrebbe terminare con "\ bin" 1 .

  3. Assicurati di non aver inserito un punto e virgola nella variabile JAVA_HOME 2 .

    NB: JAVA_HOME dovrebbe essere un unico nome di directory, non un elenco di nomi di directory "simile al PERCORSO" separati da punto e virgola.

Nota inoltre che potresti incorrere in problemi se hai ignorato questo consiglio nelle istruzioni di Maven su Windows sugli spazi nei nomi di percorso delle chiavi.

"Maven, come molti strumenti multipiattaforma, può incontrare problemi quando ci sono caratteri spaziali in nomi di percorso importanti ."

"È necessario installare Java SDK (ad esempio dal sito di download di Oracle) e installarlo su un percorso senza spazi , come c: \ j2se1.6." "

"È necessario decomprimere la distribuzione Maven. Non decomprimerlo nel mezzo del codice sorgente; scegliere una posizione ( senza spazi nel percorso! ) E decomprimerlo lì."

Il semplice rimedio per questo sarebbe reinstallare Java o Maven in una posizione diversa in modo che non ci sia spazio nel percorso


1 - .... a meno che tu non abbia fatto una scelta folle per il nome della posizione di installazione.

2 - Apparentemente una comune soluzione "voodoo" ai problemi di percorso di Windows è battere un punto e virgola alla fine. Non è raccomandato in generale, assolutamente non funziona qui.


29

ERRORE: JAVA_HOME è impostato su una directory non valida. JAVA_HOME = "E: \ Sun \ SDK \ jdk \ bin" Imposta la variabile JAVA_HOME nel tuo ambiente in modo che corrisponda alla posizione dell'installazione di Java

JAVA_HOMEdovrebbe essere impostato su E:\Sun\SDK\jdk. PATHdovrebbe essere impostato per includere %JAVA_HOME%\bin.


13

Ho riscontrato questo problema con un'installazione di Grails.

Il problema era che il mio JAVA_HOME era c:\sun\jdk\e il mio PATH ha%JAVA_HOME%bin

L'ho cambiato in: JAVA_HOME= "c:\sun\jdk" and PATH="%JAVA_HOME%\bin"

Dopo di che ha funzionato.


10

Stavo affrontando lo stesso problema e ho appena aggiornato JAVA_HOME che ha funzionato per me.

in precedenza era così: C: \ Program Files \ Java \ jdk1.6.0_45 \ bin Ho appena rimosso \ bin e ha funzionato per me.


4

A causa delle restrizioni di sicurezza nel mio attuale luogo di lavoro, non sono stato in grado di impostare le variabili ambientali sul mio PC basato su Windows.

La mia soluzione alternativa era copiare il file mvn.bat da% M2% in C: \ WINNT e aggiungere quanto segue all'inizio del file batch:

@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%

Non è la soluzione più carina ma funziona. Se qualcuno ha un altro modo o una soluzione in cui gli env standard non possono essere impostati nel sistema, sarei lieto di rispondere.


3

Ho avuto lo stesso problema e nessuna delle risposte precedenti lo ha risolto per me perché le mie variabili env erano tutte impostate. Avevo appena reinstallato il mio Java.

Ciò che ha funzionato era

  1. vai su C:\path\to\apache-maven-3.0.4\bine apri il mvn.batfile.
  2. Trova la linea che assomiglia a questa @SET JAVA_HOME=C:\progra~1\java\jdk1.7.0_03
  3. Correggilo nel percorso giusto

Non so se sia specifico per Windows, ma potrebbe aiutare qualcuno!


2

Dopo molti tentativi falliti, ho trovato la soluzione

Era il ";" alla fine di JAVA_HOME che metto sempre alla fine di ogni nuova variabile che ho impostato. Quindi sbarazzati del;.

JAVA_HOME lo ha impostato anche in Variabile utente (senza il ";" ofcourse)


1
"... che metto sempre alla fine di ogni nuova variabile che ho impostato" - Perché lo faresti?
Stephen C

1

dovresti impostare JAVA_HOME o MAVEN_HOME senza directory bin ad esempio: - JAVA_HOME = C: \ Program Files (x86) \ Java \ jdk1.7.0_45 - MAVEN_HOME = C: \ Program Files (x86) \ apache-maven-3.1.1 ora percorso = .....;% MAVEN_HOME% \ bin;% JAVA_HOME% \ bin funziona correttamente


1

A volte in Windows gli spazi bianchi nei percorsi non vengono riconosciuti correttamente

Se hai un problema con il percorso e il percorso sembra

c:\Program Files\....

prova a cambiarlo in un vecchio formato DOS come

"C:\Progra~1\...

È possibile utilizzare dir /xper verificare la sintassi corretta (terza colonna)

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 ...

Nel mio pc JAVA_HOME è (e funziona)

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

Testato in Windows 10



0

Questo sembra essere un vecchio post, ma volevo comunque condividere come questo problema è stato risolto per me.

Per gli utenti che non dispongono dell'accesso amministrativo e quando aprono un prompt dei comandi, viene eseguito con privilegi utente. Significa che potresti avere un percorso come C: \ Users \

quindi, quando si prova C: \ Users \ XYZ> mvn --version, in realtà cerca il percorso JAVA_HOME dalle variabili utente non dalle variabili di sistema nelle variabili d'ambiente.

Quindi, per risolvere questo problema, dobbiamo creare una variabile di ambiente per JAVA_HOME nelle variabili utente.

Spero, questo aiuta qualcuno.


Ermmm ... Le variabili di ambiente dell'utente sovrascrivono le variabili di ambiente di sistema su Windows. Se si dispone di una variabile di ambiente di sistema e utente con lo stesso nome, la variabile utente "vince" ed è ciò che vede l'applicazione.
Stephen C

0

L'esecuzione di eclipse e anche l'esecuzione di Maven richiederà di memorizzare due variabili di percorso, una nella tua posizione jdk1.7_x_x_x e anche nella tua jdk1.7_x_x_ \ bin. Se stai usando Windows, quando sei nelle tue variabili d'ambiente, procedi come segue:

1) crea una variabile USER chiamata JAVA_HOME. Punta questo alla posizione del tuo file JAVA. Ad esempio: "C: \ Program Files \ Java \ jdk1.7.0_51" (rimuovi le virgolette)

2) sotto PATH, aggiungi% JAVA_HOME% al PATH. Questo aggiungerà il percorso del file dal passaggio 1 al tuo PERCORSO. Questo è un bene per MAVEN

3) se si utilizza eclipse è necessario che il percorso punti a "C: \ Program Files \ Java \ jdk1.7.0_51 \ bin". Ora aggiungi% JAVA_HOME% \ bin alla fine del tuo percorso.

4) il tuo percorso dovrebbe essere simile a questo: C: \ Programmi (x86) \ Google \ google_appengine \; C: \ Users \ username \ AppData \ Roaming \ npm;% M2%;% JAVA_HOME%;% JAVA_HOME% \ bin

Note: agli elementi racchiusi tra% come% M2% vengono assegnate variabili. Sembra ridondante ma necessario. Puoi confermare che tutto funziona digitando:

java -version
javac -version
mvn -version

Ciascuna di queste tre istruzioni digitate nel prompt di comando non dovrebbe restituire errori.


Il passaggio 2) non è corretto e non è necessario. Né la toolchain Java né Maven richiedono che% JAVA_HOME% si trovi nella variabile "PATH". (Non farà alcun danno reale , ma non fa nemmeno bene.) Riferimento - tutorialspoint.com/maven/maven_environment_setup.htm
Stephen C

0

utilizzando Windows 10

Stavo affrontando un problema .. quindi ho rimosso completamente la variabile JAVA_HOME e ho appena aggiunto% JAVA_HOME% \ bin in PATH, quindi ha funzionato !!! per me


1
Grazie, funziona dopo aver aggiunto "/ bin" alla fine della variabile Java_home
Rahul

-1

Il JDK ha cambiato posizione di java.exe tra 1.6 e 1.7 !!!

Nel mio caso ho scoperto che JAVA_HOME per JDK doveva aggiungere \ jre alla fine. Il file mvn bat sta cercando java.exe e lo cerca in JAVA_HOME \ bin. Non è lì per JDK 1.7; è in JAVA_HOME \ jre \ bin. In JDK 1.6 è in JAVA_HOME \ bin.

Spero che questo aiuti qualcuno.


1
Credo che questo non sia corretto. Secondo la documentazione ufficiale Oracle per Java 7 ( docs.oracle.com/javase/7/docs/technotes/tools/windows/… ), in un'installazione JDK il comando "java" appare sia in "JAVA_HOME \ bin" che " JAVA_HOME \ jre \ bin ". Se questo non è così nella tua installazione, allora qualcuno / qualcosa ha sbagliato!
Stephen C

Interessante. Non è nella mia directory / bin, solo in / jre / bin. Forse devo reinstallare l'ultimo JDK
Brian Reinhold

-1

La mia situazione era un po 'diversa.

  • JAVA_HOME è stato impostato correttamente per puntare a 1.7
  • Altri progetti Maven stavano funzionando / costruendo bene con le funzionalità 1.7.
  • PATH è stato impostato correttamente.
  • Tutto era aggiornato.

Tuttavia il mio nuovo semplice progetto Maven non funzionava. Quello che ho notato è stata la differenza nei log durante la corsa mvn clean install. Per i miei vecchi progetti Maven, ha mostrato

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

Ma per il mio nuovo progetto ha mostrato:

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

Quindi, ho guardato e ho POM.xmlnotato questa cosa nel POM del vecchio progetto:

<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>

Fondamentalmente, questo plugin dice quale versione del compilatore usare per la compilazione. L'ho appena aggiunto al nuovo progetto POM.xmle le cose hanno funzionato.

Spero sia utile a qualcuno.


Questa non è una risposta valida a questa domanda. I sintomi sono diversi. La soluzione è diversa.
Stephen C

-1

Sto usando Windows 7, il problema che ho avuto è stato semplice:

Avevo questo per il mio valore della variabile d'ambiente JAVA_HOME:

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

quando vuole:

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

il punto e virgola colpisce ancora!

:)

È così che ho risolto questo problema, quindi questa dovrebbe essere una possibile soluzione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.