Não foi possível instalar o Maven no Windows: “JAVA_HOME está definido para um diretório inválido”

98

Segui o tutorial do Maven ao pé da letra, mas ainda não consigo instalar o Maven no Windows.

Quando executo o seguinte no prompt de comando:

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

Eu recebo:

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

Naveguei até a pasta de instalação do maven e executei mvn --versione obtive:

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

mas quando corro java -versionrecebo:

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)

Portanto, tenho o Java instalado. Alguém sabe qual é o problema?

hello_world_infinity
fonte

Respostas:

172

Os problemas têm a ver com seus caminhos.

  1. Certifique-se de que o diretório "E: \ java resources \ apache-maven-2.2.0 \ bin" esteja no caminho de pesquisa do comando.

  2. Certifique-se de que a variável JAVA_HOME se refira ao diretório inicial para sua instalação Java. Se você estiver executando Java de "E: \ Sun \ SDK \ jdk \ bin", a variável JAVA_HOME precisa apontar para "E: \ Sun \ SDK \ jdk".

    NB: JAVA_HOME NÃO deve terminar com "\ bin" 1 .

  3. Certifique-se de não colocar um ponto e vírgula na variável JAVA_HOME 2 .

    NB: JAVA_HOME deve ser um único nome de diretório, não uma lista "semelhante a PATH" de nomes de diretório separados por ponto e vírgula.

Observe também que você pode ter problemas se tiver ignorado este conselho nas instruções do Maven no Windows sobre espaços em nomes de caminhos-chave.

"Maven, como muitas ferramentas de plataforma cruzada, pode encontrar problemas quando há caracteres de espaço em nomes de caminhos importantes ."

"Você precisa instalar o Java SDK (por exemplo, do site de download da Oracle) e deve instalá-lo em um caminho sem espaços , como c: \ j2se1.6." '

"Você precisa descompactar a distribuição Maven. Não descompacte no meio do seu código-fonte; escolha algum local ( sem espaços no caminho! ) E descompacte lá."

O simples remédio para isso seria necessário reinstalar Java ou Maven em um local diferente, de modo que há não é um espaço no caminho


1 - .... a menos que você tenha feito uma escolha insana para o nome do local de instalação.

2 - Aparentemente, uma solução "vodu" comum para problemas de caminho do Windows é bater um ponto e vírgula no final. Não é recomendado em geral, absolutamente não funciona aqui.

Stephen C
fonte
29

ERROR: JAVA_HOME está definido para um diretório inválido. JAVA_HOME = "E: \ Sun \ SDK \ jdk \ bin" Defina a variável JAVA_HOME em seu ambiente para corresponder ao local de sua instalação Java

JAVA_HOMEdeve ser definido como E:\Sun\SDK\jdk. PATHdeve ser definido para incluir %JAVA_HOME%\bin.

dfa
fonte
13

Corri para esse problema com uma instalação Grails.

O problema era meu JAVA_HOME foi c:\sun\jdk\e meu PATH tem%JAVA_HOME%bin

Eu mudei para: JAVA_HOME= "c:\sun\jdk" and PATH="%JAVA_HOME%\bin"

Funcionou depois disso.

L_7337
fonte
10

Eu estava enfrentando o mesmo problema e acabei de atualizar o JAVA_HOME que funcionou para mim.

anteriormente era assim: C: \ Arquivos de programas \ Java \ jdk1.6.0_45 \ bin Acabei de remover o \ bin e funcionou para mim.

user3548196
fonte
4

Devido a restrições de segurança em meu local de trabalho atual, não consegui definir variáveis ​​de ambiente em meu PC com Windows.

Minha solução alternativa foi copiar o arquivo mvn.bat de% M2% para C: \ WINNT e adicionar o seguinte ao início do arquivo em lote:

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

Não é a melhor solução, mas funciona. Se alguém tiver qualquer outra maneira ou solução em que os env vars padrão não possam ser configurados no sistema, eu gostaria de receber sua resposta.

theINtoy
fonte
3

Eu tive o mesmo problema e nenhuma das respostas acima corrigiu para mim porque minhas variáveis ​​env estavam todas definidas. Eu tinha acabado de reinstalar meu Java.

O que funcionou foi

  1. vá para C:\path\to\apache-maven-3.0.4\bine abra o mvn.batarquivo.
  2. Encontre a linha que se parece com esta @SET JAVA_HOME=C:\progra~1\java\jdk1.7.0_03
  3. Corrija para o caminho certo

Não sei se isso é específico do Windows, mas pode ajudar alguém!

codinguser
fonte
2

Depois de muitas tentativas fracassadas, encontrei a solução

Foi o ";" no final de JAVA_HOME que eu sempre coloco no final de cada nova variável que defino. Portanto, livre-se do;.

JAVA_HOME defini-lo na variável do usuário também (sem o ";" claro)

Chinmoy
fonte
1
"... que eu sempre coloco no final de cada nova variável que defino" - Por que você faria isso?
Stephen C
1

você deve definir JAVA_HOME ou MAVEN_HOME sem o diretório bin, por exemplo: - JAVA_HOME = C: \ Arquivos de programas (x86) \ Java \ jdk1.7.0_45 - MAVEN_HOME = C: \ Arquivos de programas (x86) \ apache-maven-3.1.1 agora path = .....;% MAVEN_HOME% \ bin;% JAVA_HOME% \ bin está funcionando corretamente

Alireza Alallah
fonte
1

Às vezes, no Windows, os espaços em branco nos caminhos não são reconhecidos corretamente

Se você tem um problema de caminho e o caminho parece

c:\Program Files\....

tente alterá-lo em um formato DOS antigo como

"C:\Progra~1\...

Você pode usar dir /xpara verificar a sintaxe correta (terceira coluna)

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

No meu pc está JAVA_HOME (e funciona)

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

Testado em Windows 10

Diego betto
fonte
0

JAVA_HOME deve ser assim C: \ PROGRA ~ 1 \ Java \ jdk

Espero que funcione!

Rakshit degradante
fonte
0

Esta parece ser uma postagem antiga, mas eu gostaria de compartilhar como esse problema foi corrigido para mim.

Para usuários que não têm acesso de administrador e quando abrem um prompt de comando, ele é executado com o privilégio de usuário. Isso significa que você pode ter um caminho como C: \ Usuários \

portanto, ao tentar C: \ Usuários \ XYZ> mvn --version, ele realmente pesquisa o caminho JAVA_HOME a partir de variáveis ​​de usuário, não de variáveis ​​de sistema em Variáveis ​​de ambiente.

Portanto, para corrigir isso, precisamos criar uma variável de ambiente para JAVA_HOME nas variáveis ​​de usuário.

Espero que isso ajude alguém.

Maneshwar
fonte
Ermmm ... As variáveis ​​de ambiente do usuário substituem as variáveis ​​de ambiente do sistema no Windows. Se você tiver uma variável de sistema e de ambiente de usuário com o mesmo nome, a variável de usuário "ganha", e é isso que o aplicativo vê.
Stephen C
0

A execução do eclipse e também do Maven exigirá que você armazene duas variáveis ​​de caminho, uma em seu local jdk1.7_x_x_x e também em seu jdk1.7_x_x_ \ bin. Se você estiver usando o Windows, quando estiver em suas variáveis ​​de ambiente, faça o seguinte:

1) crie uma variável USER chamada JAVA_HOME. Aponte para a localização do seu arquivo JAVA. Por exemplo: "C: \ Program Files \ Java \ jdk1.7.0_51" (remova as aspas)

2) no PATH, anexe% JAVA_HOME% ao PATH. Isso adicionará o local do arquivo da etapa 1 ao seu PATH. Isso é bom para o MAVEN

3) se você estiver usando o eclipse, você precisa que o caminho aponte para "C: \ Arquivos de programas \ Java \ jdk1.7.0_51 \ bin". Agora anexe% JAVA_HOME% \ bin ao final do seu caminho.

4) seu caminho deve ser parecido com este: C: \ Arquivos de programas (x86) \ Google \ google_appengine \; C: \ Users \ username \ AppData \ Roaming \ npm;% M2%;% JAVA_HOME%;% JAVA_HOME% \ bin

Observações: os itens incluídos em% 's, como% M2%, são variáveis ​​atribuídas. Parece redundante, mas necessário. Você pode confirmar se tudo funciona digitando:

java -version
javac -version
mvn -version

Cada uma dessas três instruções digitadas no prompt do comman não deve retornar erros.

Pulga rosnando
fonte
A etapa 2) está incorreta e desnecessária. Nem o conjunto de ferramentas Java nem o Maven exigem que% JAVA_HOME% esteja na variável "PATH". (Não fará nenhum dano real , mas também não fará nenhum bem.) Referência - tutorialspoint.com/maven/maven_environment_setup.htm
Stephen C
0

usando windows 10

Eu estava enfrentando um problema ... então removi a variável JAVA_HOME completamente e apenas adicionei% JAVA_HOME% \ bin no PATH e funcionou !!! para mim

Code Spy
fonte
1
Obrigado. Funciona depois de adicionar "/ bin" no final da variável Java_home
Rahul
-1

O JDK mudou os locais do java.exe entre 1.6 e 1.7 !!!

No meu caso descobri que o JAVA_HOME para o JDK tinha que adicionar o \ jre no final. O arquivo mvn bat está procurando java.exe e o procura em JAVA_HOME \ bin. Não está lá para o JDK 1.7; está em JAVA_HOME \ jre \ bin. No JDK 1.6, ele ESTÁ em JAVA_HOME \ bin.

Espero que isso ajude alguém.

Brian Reinhold
fonte
1
Eu acredito que isso está incorreto. De acordo com a documentação oficial da Oracle para Java 7 ( docs.oracle.com/javase/7/docs/technotes/tools/windows/… ), em uma instalação JDK o comando "java" aparece tanto em "JAVA_HOME \ bin" quanto em " JAVA_HOME \ jre \ bin ". Se não for assim em sua instalação, então alguém / algo mexeu com isso!
Stephen C
Interessante. Não está no meu diretório / bin, apenas no meu / jre / bin. Talvez eu precise reinstalar o JDK mais recente
Brian Reinhold
-1

Minha situação era um pouco diferente.

  • JAVA_HOME foi definido corretamente para apontar para 1,7
  • Outros projetos Maven estavam funcionando / construindo bem com 1.7 recursos.
  • PATH foi definido corretamente.
  • Tudo estava em dia.

Ainda assim, meu novo projeto Maven simples não estava funcionando. O que percebi foi a diferença nos logs quando corri mvn clean install. Para meus projetos Maven mais antigos, ele mostrou

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

Mas para meu novo projeto ele mostrou:

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

Então, olhei para o POM.xmle notei esta coisa no POM do projeto antigo:

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

Basicamente, este plugin informa qual versão do compilador usar para compilação. Acabei de adicioná-lo ao novo projeto POM.xmle tudo funcionou.

Espero que seja útil para alguém.

Bhushan
fonte
Esta não é uma resposta válida para esta pergunta. Os sintomas são diferentes. A solução é diferente.
Stephen C
-1

Estou usando o Windows 7, o problema que tive era simples:

Eu tinha isso para o valor da minha variável de ambiente JAVA_HOME:

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

quando quiser:

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

o ponto-e-vírgula ataca novamente!

:)

Foi assim que resolvi esse problema, então essa deve ser uma das soluções possíveis.

Alexander Mills
fonte