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?

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.


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.


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.


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.


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.


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!


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)


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


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



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.


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.


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


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.


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.


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.