Falha na compilação do Maven: “Não foi possível localizar o compilador Javac em: problema jre ou jdk”

112

Eu tenho meu JAVA_HOME definido para:

C:\Program Files (x86)\Java\jdk1.6.0_18

Depois de correr maven install, recebo esta mensagem do Eclipse :

Razão:

Unable to locate the Javac Compiler in:
  C:\Program Files (x86)\Java\jre6\..\lib\tools.jar
Please ensure you are using JDK 1.4 or above and
not a JRE (the com.sun.tools.javac.Main class is required).
In most cases you can change the location of your Java
installation by setting the JAVA_HOME environment variable.

Tenho certeza que essa é a parte complicada

Certifique-se de estar usando JDK 1.4 ou superior e não um JRE

Quando executo a configuração, ela é definida como JRE6. Como faço para alterá-lo para JDK 1.6 que já instalei?

Até tentei modificar o plugin:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.0.2</version>
    <configuration>
        <source>1.6</source>
        <target>1.6</target>
        <executable>C:\Program Files (x86)\Java\jdk1.6.0_18\bin</executable>
    </configuration>
</plugin>

Ainda recebo o mesmo erro.

Eu uso o plugin Eclipse Maven. Como posso mudar de JRE para JDK no Eclipse?

Gandalf StormCrow
fonte
Você verificou duas vezes usando o comando de linha de setcomando para ter certeza de que JAVA_HOME está definido como você pensa que é?
Powerlord
Estou usando java diariamente .. tudo funciona bem aqui está: java -version .6.0_18-ea" time Environment (build 1.6.0_18-ea-b04) ) Client VM (build 16.0-b11, mixed mode, sharing)
Gandalf StormCrow
1
Defina <fork> true </fork> ao definir o executável.
Robin
Isso não nos diz qual instalação do Java java -versionestá em execução; pode ser a instalação do JRE ou JDK. javac -versionseria um pouco mais útil. No entanto, mesmo assim, se PATH estiver correto e JAVA_HOME errado, eles ainda apareceriam como você esperaria.
Powerlord
1
Além disso, o executável deve ser ... \ bin \ javac, você deve especificar o executável real, não apenas o caminho.
Robin

Respostas:

141

Você pode tentar atualizar o JDK que o Eclipse está usando, da seguinte maneira:

Adicione e defina o JRE no menu JanelaPreferências ...JavaJREs instalados :

JRE type: Standard VM JRE
Name: jdk1.6.0_18
JRE home directory: C:\Program Files (x86)\Java\jdk1.6.0_18

Se este não for o caso, é possível que os colchetes e espaços no caminho JAVA_HOME estejam causando problemas. Tente copiar seu JDK para um local diferente e atualizar seu JAVA_HOME.

lucrussell
fonte
1
Na verdade, é a primeira parte da sua pergunta, JAVA_HOME está tudo bem
Gandalf StormCrow
47
Para mim, uma etapa extra foi necessária: ir para as propriedades do referido projeto-> caminho de compilação do java-> bibliotecas-> selecione "Biblioteca do sistema JRE", clique em Editar e selecione "Espaço de trabalho JRE padrão"
maayank
1
não foi suficiente para mim, tive que editar eclipse.ini. Eu acredito que há um bug.
ruhsuzbaykus
Funcionou para mim apenas quando verifiquei o jdk apropriado no ambiente de execução -> JREs compatíveis.
Vedran
9
Além disso, se você executar o Maven a partir de uma configuração de execução do eclipse criada antes dessas mudanças de configuração, lembre-se de acessar a janela Executar configuração / guia JRE e selecionar o JRE correto. Caso contrário, você pode estar usando o JRE antigo errado, mesmo depois de atualizar o eclipse e as configurações do projeto para o novo.
Diana,
20

O arquivo eclipse.ini precisa do vmargumento para apontar para a localização do JDK.

Edite o eclipse.iniarquivo para apontar para sua casa JDK, algo como a seguir -

-vm
C:\Program Files\Java\jdk1.6.0_06

Isso garante que o Eclipse seja executado fora do JDK e não qualquer JRE padrão em sua máquina.

Sai Hegde
fonte
5
Isso resolveu meu problema. Pesquisando na web, parece que o Maven usa JAVA_HOME, mas o plug-in Maven não sabe nada sobre JAVA_HOME e, em vez disso, usa como padrão a VM usada para iniciar o Eclipse.
jnosek
13

Você tenta:

Vá para Preferences/Java/Installed JREse adicione um para o local "C:\Program Files\Java\jdk1.6.0_27\jreou algo parecido.

Remova aquele para C:\Program Files\Java\jre6

Como você pode ver, o caminho C:\Program Files\Java\jre6\..\lib\tools.jarsó faz sentido se a primeira parte (até o / ..) for substituída por C:\Program Files\Java\jdk1.6.0_27\jre.

cuocdoibian1971
fonte
10

Definir fork como true resolveu o problema para mim.

<configuration>
    <fork>true</fork>
    <source>1.6</source>
    <target>1.6</target>
</configuration>
Prash
fonte
9

Eu tive exatamente o mesmo problema! Eu estive procurando e procurando por dias porque toda a tagarelice sobre "colocar o -vm c: \ arquivos de programas \ java \ jdkxxxxx \ bin" no ini ar como argumento para um atalho não ajudou em nada !

(Pareço frustrado? Acredite em mim, isso é um eufemismo! Estou simplesmente furioso porque perdi uma semana tentando tornar o Maven confiável!)

Tive um comportamento muito imprevisível. Às vezes é compilado e às vezes não. Se eu fizesse um maven clean, ele não conseguiria encontrar o compilador e falhou. Se eu alterei algo no caminho de construção, de repente funcionou novamente !!

Até que fui ao menu JanelaPreferênciasJavaJREs instalados . Eu adicionei um novo JRE usando a localização do JDK e, em seguida, removi o JRE. De repente, Maven ficou estável!

Talvez valha a pena colocar letras com tamanho de fonte 30 ou mais no manual do Apache?

Com todo o respeito, isso é simplesmente ultrajante para a comunidade Java! Não consigo imaginar quantos dias foram perdidos por todas essas pessoas tentando resolver seus problemas desse tipo! Não posso imaginar que isso seja lançado como uma versão final. Eu pessoalmente não ousaria lançar tal coisa sob o nome de software beta ...

Atenciosamente de qualquer maneira ... Depois de uma semana de adulteração, posso finalmente começar a desenvolver. Espero que meu chefe não descubra isso. Levei muito esforço para convencê-lo a não usar o .NET e já sinto muito por isso.

Lorenzo
fonte
1
linha de fundo, use-o no console, não no eclipse, você não terá esse tipo de problema, é o que percebi depois de alguns meses de uso, agora bastante confortável com o maven
Gandalf StormCrow
É mais um eclipse ... problema m2e .. Estou com o mesmo problema e os outros IDEs (netbeans e IDEA) funcionam perfeitamente.
joshua de
3

Eu tenho o mesmo problema ao usar Executar como -> instalação do Maven no Eclipse. JAVA_HOME e eclipse.ini estavam OK e apontando para meu JDK mais recente. Mas m2clipse usou JRE. Usar mvn install fora do Eclipse funcionou bem!

No meu caso, resolvi o problema da seguinte maneira:

  1. Navegue no Eclipse: menu JanelaPreferênciasJavaJREs instalados
  2. Havia duas entradas inativas para um JRE e um JDK. O ativo era o JDK instalado mais recentemente. Exclua todas as entradas, exceto aquela que o Maven deve usar.

Acho que o Maven não leva em consideração qual está ativo ...

Markus
fonte
3

Acabo de instalar Maven 3.0.4, definir M2_HOME, M2e JAVA_HOMEem conformidade. Em seguida, executei os seguintes comandos:

mvn archetype:generate....

mvn compile

Eu me falhou mensagem, como: maven unable to locate javac compiler.

No meu computador, tenho por padrão o JRE instalado em C: \ arquivos de programas \ java \ jre.1.6 . E eu tenho o outro C: \ java \ jdk1.6 e JAVA_HOMEdefinido como C: \ java \ jdk1.6 .

Não vi nada de errado com minha configuração. Depois de pesquisar, decidi pesquisar mvn.bat, ecoei %JAVA_HOME%cada passo e ele foi exibido corretamente como C:\java\jdk1.6, mas quando executei o comando mvn --version, ele exibiu Java home: C: \ program files \ java \ jre1.1.6 .

Por fim, descobri que só preciso configurar -Djava.home=c:\java\jdk1.6conforme o comando abaixo, e está funcionando bem agora:

%MAVEN_JAVA_EXE% %MAVEN_OPTS% -classpath %CLASSWORLDS_JAR% "-Dclassworlds.conf=%M2_HOME%\bin\m2.conf" "-Djava.home=%JAVA_HOME%" "-Dmaven.home=%M2_HOME%" %CLASSWORLDS_LAUNCHER% %MAVEN_CMD_LINE_ARGS%

Nota: Isso é para mvna linha de comando e não com o Eclipse.

smngo
fonte
Ei, você não precisa ir e sempre explicar cada passo que você fez. Por favor, veja Como responder ao ponto .
mtk
Isso parece um hack (mas ei ... se funcionar para você!), Mas é interessante que a linha de comando do maven pega o java home errado - este é o nosso problema atual.
plasma147 de
2

Resolvi o problema alterando o local do JRE instalado para o diretório presente no próprio JDK. Definir o valor adequado da JAVA_HOMEvariável de ambiente não resolveu o problema.

No meu caso, existem dois diretórios

  • C:\Program Files\Java\jdk1.7.0_03 --> For JDK

  • C:\Program Files\Java\jre7 --> For JRE

Inicialmente configurei C:\Program Files\Java\jre7como JRE instalado no Eclipse e estava recebendo o mesmo erro no caso do Maven (o Ant estava funcionando bem).

Alterando o JRE instalado para JRE C:\Program Files\Java\jdk1.7.0_03\jre7instalado no Eclipse, o problema é resolvido.

Nikhil
fonte
2

Não se esqueça de que se você estiver executando seu projeto a partir de uma configuração Eclipse específica, você deve alterar o Java Runtime em 'Run Configurations' -> 'Your maven configuration' -> 'JRE tab' após adicionar o JDK correto ao suas preferências do Eclipse.

Ivan Fernandez
fonte
2

Parece que o Maven está usando o JRE, não o JDK. Talvez você tenha instalado o Maven antes de instalar o JDK?

Verifique os arquivos de configurações . Existem três no total: sistema, usuário e projeto. Provavelmente está na configuração de instalação ($ M2_HOME / conf / settings.xml) ou, possivelmente, na configuração por usuário ($ {user.dir} /. M2 / settings.xml).

Devon_C_Miller
fonte
2

Configuração do Eclipse apenas

Execute as seguintes etapas:

  1. Clique com o botão direito em Propriedades do projeto Eclipse

  2. Caminho de construção Java → Bibliotecas

  3. Selecione Biblioteca do Sistema JRE → Clique no Editbotão

  4. Clique no botão "JREs instalados ..."

  5. Editar JRE como: Definir JRE Home = JAVA_HOME ou JAVA_HOME \ jre

Captura de tela:

Insira a descrição da imagem aqui

Parthasarathy B
fonte
Isso funcionou para mim, obrigado. Mudei a página inicial do JRE para a pasta JDK.
LadyBernkastel
1

Clique com o botão direito no menu ProjetoPropriedadesCaminho de construção Java .

Selecione o caminho do sistema JRE → Editar . Selecione o JRE Padrão da Área de Trabalho e aponte-o para JDK> 1.4.

como seu
fonte
1

Use o menu JanelaPreferênciasJavaJREs instaladosAmbientes de execução -> clique na caixa de seleção à direita.

Gambótica
fonte
1

A solução é simples. Às vezes, o Eclipse WindowsPreferênciasJavaJREs instalados apontando para C:\Program files\Java\jre.

Quando mudei para C:\Program files\Java\JDK 6.0\jreele funcionou 100%.

santhosh
fonte
1

Conforme mencionado por vários outros, a janela Eclipse → Preferências ...JavaJREs instalados deve apontar para o JDK que você instalou, não para o JRE. Só então ele pode encontrar a ../libpasta mencionada na mensagem de erro.

Mesmo assim, o problema pode se repetir. Minha saída no Eclipse v4.2 (Juno) é fazer um menu MavenAtualizar projeto ... após o qual o problema desaparece.

Suspeito que o motivo seja que alguns dos arquivos gerados pelo Eclipse (.classpath, .project, .preferences) estão no Subversion para o projeto no qual estou tendo esses problemas. Portanto, uma atualização do SVN introduz o problema e uma atualização da configuração do Maven no Eclipse o resolve novamente.

Solução real: omita os arquivos gerados pelo Eclipse do controle de versão e deixe o plugin Maven Eclipse lidar com a configuração do projeto. (Dicas / sugestões adicionais são bem-vindas) .

avandeursen
fonte
1

No meu caso, no menu do Eclipse, ExecutarConfigurações de Depuração .

Na guia JRE, selecionar o JDK em vez do JRE resolveu o problema.

Vathsala Weerasinghe
fonte
1

Eu tive o mesmo problema no Amazon Linux. Acontece que tive que instalar a versão do desenvolvedor do JDK:

sudo yum -y install java-1.7.0-openjdk-devel
Evan Siroky
fonte
1

Vá para o menu do Eclipse JanelaPreferências ...JavaJREs instalados devem apontar para o JDK que você instalou, não para o JRE.

Sudipto
fonte
Mas isso também está em várias respostas anteriores.
Peter Mortensen
0

Você também pode certificar-se de que o Eclipse tenha todas as mudanças atualizadas. Para fazer isso, clique com o botão direito do mouse em seu projeto e pressione o item de menu "Atualizar".

GregNash
fonte
0

Muitas outras respostas dizem para você apontar seu Eclipse para um JDK em vez de um JRE.

Aqui está outra resposta mais específica / clara [do que eu vi em qualquer resposta aqui] passo a passo sobre como fazer isso: Como você instala o JDK?

Isso é o que me resolveu para este mesmo problema.

Cellepo
fonte
0

Certifique-se de que o "-vm" em seu eclipse.ini esteja em duas linhas separadas, ou seja:

-vm
C:\Program Files\Java\jdk1.6.0_06
Kevin Van Dyck
fonte
0

Eu diria que a localização do compilador é definida em um POM para o plug-in do compilador estar no local do JRE exibido, em vez do local do JDK para o qual você tem JAVA_HOME apontando.

Robin
fonte
@Robin Onde exatamente devo procurar isso? o pom parece bom para mim<groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.0.2</version> <configuration> <source>1.6</source> <target>1.6</target>
Gandalf StormCrow
Se não houver um <executável> definido, então isso não é o que está causando o problema, a menos que o pom que você está olhando herde de um pom pai que o tem definido.
Robin
Ao definir o executável, você também deve definir <fork> como verdadeiro.
Robin de
0

Você precisa indicar JAVA_HOMEem mvn.ini(está na pasta Maven /bin), e seu problema irá desaparecer.

Javicha
fonte
0

Se você definir o JAVA_HOME e o problema persistir, tente o seguinte.

(Tive o mesmo problema em um PC recém-instalado.)

Supondo que você esteja usando o Eclipse.

  • Abra a janelaPreferênciasJavaJre's instalados . Remova tudo o que você tiver lá, adicione o desejado que deseja usar (JDK, sem JRE!)
  • Na mesma janela, abra o maven - installation, adicione a instalação do Maven que você baixou e extraiu em algum lugar. ( Não use a instalação Maven embutida. Ela tem alguns bugs conhecidos.)

Isso é tudo. Seu projeto não sofrerá com esses problemas.

Marcell
fonte
0

Eu tive o mesmo erro, por causa da versão JUnit . Eu tinha três 3.8.1 e mudei para 4.8.1.

Portanto, a solução é:

Você tem que ir ao POM e certificar-se de que sua dependência se parece com isto

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.8.1</version>
  <scope>test</scope>
</dependency>
Ibo
fonte
0

Eu mudei a configuração do maven-compiler-plugin para add executablee forkcom valor true.

<configuration>
    <fork>true</fork>
    <source>1.6</source>
    <target>1.6</target>
    <executable>C:\Program Files\Java\jdk1.6.0_18\bin\javac</executable>
</configuration>

Funcionou para mim

Soumyajit Swain
fonte
0

Faça Echo %JAVA_HOME%e então mvn --version.

O caminho do JRE deve ser o mesmo ... então vá ao menu JanelaPreferênciasJavaA localização do JRE instalado deve ser a mesma que Java_Homeestá sendo exibida.

vandana
fonte
0

Vá para a caixa de diálogo Propriedades e clique com o botão direito do mouse no projeto.

Em Recursos vinculados , adicione um novo caminho chamado JAVA_HOME e coloque em sua localização JDK, algo como "C: \ Arquivos de programas \ Java \ jdk1.8.0_73".

Isso é tudo!!

Macu Gómez
fonte
Eu não acho que você deve adicionar qualquer variável .. apenas altere a configuração do JDK em Executar seetings para a área de trabalho JDK
Phani
0

A solução para este problema é muito simples ...

Se você não tiver um arquivo de construção Ant , gere-o. No Eclipse, você pode criar facilmente um arquivo Ant .

Consulte o link para criar o arquivo de compilação Ant [ http://www.codejava.net/ides/eclipse/how-to-create-ant-build-file-for-existing-java-project-in-eclipse] .

Agora siga as etapas fornecidas:

1) Inclua seu arquivo de construção Ant na visualização Ant que está na janela de visualização.

2) clique com o botão direito no seu Ant arquivo de compilação do e selecione Executar como e a segunda opção nesse "Ant Build".

3) Agora, uma caixa de diálogo será aberta com várias opções e guias.

4) Selecione o JRE guia .

5) Você verá três botões de opção e eles terão JRE ou JDK selecionado como uma opção.

6) Observe com atenção se as opções do botão de rádio estão com o JRE selecionado e altere-o para JDK .

7) Clique em aplicar.

É isso aí...!!!

Nishat Lakhani
fonte